将向量中的元素转换为相应元素的某个常数

问题描述 投票:0回答:1

我正在使用 Eigen 库。我想将向量中的每个元素转换为向量中相应元素的幂的某个常数。我想有效地做到这一点,我想避免遍历向量中每个元素的循环。示例:

int c = 3;
Vector<int, 3> v = { 1, 2, 3 }
v = pow(v, 5);   // < pseudocode
std::cout << v;

所需输出:

 3  9 27

解释:{c^1, c^2, c^3} = {3^1, 3^2, 3^3} = {3, 9, 27}

c++ eigen eigen3
1个回答
0
投票

您可以简单地循环向量并使用

std::pow(base, value)
重新分配每个值。

或者,您可以使用

std::transform

void raise(std::vector<int> & v, int base)
{
    std::transform(v.begin(), v.end(), v.begin(), [base](int val){return std::pow(base, val);});
}

然后你可以写:

int c = 3;
std::vector<int> v {1, 2, 3};
raise(v, c);

for(int val : v)
        std::cout << val << ' ';

输出:

3 9 27 

演示

© www.soinside.com 2019 - 2024. All rights reserved.