我有一个载体
vector<float>v = {-0.2f, 1.4f, -6.5f};
我喜欢它转换为
v = {-1, 1, -1};
逻辑是:对于每个元素,如果它小于0,则设置为-1,如果它等于0,则将其设置为0,如果它大于0,则将其设置为1。
答案 0 :(得分:2)
您可以使用std::transform
进行比较并相应地替换元素。
std::transform(v.begin(), v.end(), v.begin(), [](float f)
{
return f == 0 ? 0 : (f < 0 ? -1 : 1);
});
答案 1 :(得分:0)
有一种避免平等操作符的简单方法:
std::vector<float> in{-0.4, 0.0, 5.0001};
std::vector<int> out;
out.reserve(in.size());
std::transform(in.begin(), in.end(), std::back_inserter(out), [](float n) {
return (n > 0.0) - (n < 0.0);
});