std::vector<float> a {-0.2, 2.0, -0.9, 2.4, 22.0}
如何获取所有向量元素的绝对值?
答案 0 :(得分:6)
此代码将帮助您,循环向量并应用abs(函数以查找绝对值)
for(unsigned int i = 0; i < numbers.size(); i++)
{
if(numbers[i] < 0)numbers[i] *= -1; //make positive. _OR_ use numbers[i] = abs(numbers[i]);
std::cout<<numbers[i]<<std::endl;
}
答案 1 :(得分:4)
Use the formula |a| = sqrt(sum(ai*ai))
:
float value = 0.0;
for(int i = 0; i < a.size(); i++) value += a[i] * a[i];
value = sqrt(value);
答案 2 :(得分:3)
您可以使用以下代码。
#include <iostream>
#include <string>
#include <cstring>
#include <vector>
using namespace std;
void v_abs( vector <int> &x, double p[])
{
int i=0;
while( p[i] < x.size () )
{
if ( p[i] < 0 )
{
p[i] *= -1 ;
}
i ++;
}
}
int main() {
cout << v_abs << endl;
system("pause");
return 0;
}
答案 3 :(得分:1)
您创建一个函数,接收向量作为输入并返回另一个向量:
const std::vector< float >& absValues(std::vector< float >& vecIn)
{
for(float &val : vecIn)
{
if (val < 0)
{
val *= -1;
}
}
return vecIn;
}
如果你想要向量的所有元素之和的sqrt,那么你应该这样做as John Bupit said(恕我直言很好)