相关疑难解决方法(0)

std::abs 与 std::transform 不起作用

拿这个例子:

#include <vector>
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cmath>

void PrintVec(const std::vector<float>&);
int main(int argc, char * argv[]){

float vals[] = {-1.2,0.0,1.2};
std::vector<float> test(vals, vals + sizeof(vals) / sizeof(float));
std::vector<float> absTest(3);

std::transform(test.begin(), test.end(), absTest.begin(), std::abs<float>());

PrintVec(test);
PrintVec(absTest);

return 0;
}

void PrintVec(const std::vector<float> &vec){
for (unsigned int i = 0; i < vec.size(); ++i){
    std::cout << vec[i] << '\n';
}
return;
}
Run Code Online (Sandbox Code Playgroud)

使用 gcc 4.3.4 和 VS 2013 我得到编译器错误。对于 gcc 来说:

testTransformAbs.cpp:15: 错误:'float' 之前的预期主表达式

对于 VS 2013,其:

错误 …

c++ stl

4
推荐指数
2
解决办法
2359
查看次数

标签 统计

c++ ×1

stl ×1