矢量浮点到整数/符号转换
vector float to int/sign conversion
我有一个向量
vector<float>v = {-0.2f, 1.4f, -6.5f};
我喜欢它被转换为
v = {-1, 1, -1};
逻辑是:对于每个元素,如果小于 0,则设置为 -1,如果等于 0,则设置为 0,如果大于 0,则设置为 1。
您可以使用
std::transform
进行比较并相应地替换元素。
std::transform(v.begin(), v.end(), v.begin(), [](float f)
{
return f == 0 ? 0 : (f < 0 ? -1 : 1);
});
有一种简单的方法可以避免相等运算符:
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);
});
相关文章:
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 获取隐式转换溢出从无符号到已签名的警告
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- C ++中无符号位长度类型之间的隐式转换,即uint8_t,uint16_t
- 错误:隐式转换更改符号:'int'到'unsigned long'
- 如何将 UTF-8 文本从文件转换为某个可以迭代的容器,并检查每个符号是否为C++字母数字?
- 将浮点数转换为无符号字符数组并打印出来
- 将无符号转换为复杂<int>原因符号转换警告
- 自动符号转换,用于对类等数学向量进行操作
- 矢量浮点到整数/符号转换
- C++编译器或预处理器是否可以将符号转换为大写
- 在 AND 和比较时进行符号转换
- 多字节到宽字符将 (°) 度数符号转换为
- Java中的反向无符号到有符号转换
- 我能把字符符号转换成字符串吗