c++ - 使用正确的强制转换用 std::array of double 的元素填充 int 的 std::array 的最简单方法是什么?
问题描述
我想在使用std::array<double, 4>
的函数中使用std::array<int, 4>
?
那么,实现这一目标的最简单/最短(两者)的方法是什么。
例如
#include <array>
#include <iostream>
void printInts(std::array<int, 4> someInts) {
for(int someInt : someInts) {
std::cout << someInt << std::endl;
}
}
std::array<double, 4> someDoubles{1.1, 2.2, 3.3, 4.4};
int main() {
printInts(someDoubles); // of course it doesn't work
return 0;
}
非常感谢您的每一次帮助;)
附言
1
2
3
4
当然会是预期的输出。
解决方案
如果你不能改变函数PrintInts
,那么你可以创建一个int
数组的版本,然后用它调用函数:
std::array<int, 4> ints;
std::copy(std::begin(someDoubles), std::end(someDoubles), std::begin(ints));
printInts(ints);
请注意,由于转换范围缩小,从double
to转换可能会丢失精度。int
如果转换后的double
值不能用int
.
这是一个演示。
推荐阅读
- java - 如果有参数,如何从另一个方法访问一个方法
- javascript - 为什么缓存破坏它并不总是有效?
- jenkins - 如何使用 groovy 在 Jenkins Pipeline 中执行 SQL 查询(sql server 数据库)?
- docker - 借助包装脚本作为环境变量在 docker 容器内传递凭据
- html - HTML 元素中不需要的宽度或填充间隙
- python - Django QuerySet,当值为空时删除数据
- java - Android 中的 DatePickerDialog
- java - 为 maven 但非 Java 应用程序使用 jib
- apache - 使用 utms 将 1 个域的 301 重定向到另一个站点
- php - 如何从值列表中获取具有最高值的行