我正在使用 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}
您可以简单地循环向量并使用
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