将矢量<int>分配给矢量是否安全<double>?
Safe to assign vector<int> to vector<double>?
要为某个计算初始化变量,我必须从整数数组中为它们赋值。所以我这样做:
vector<double> vd;
int ai[N]; // Filled somewhere else
vd.assign(ai, ai+N);
在gcc 4.6.1 Linux下工作。但它总是正确的吗?或者我应该回到常绿的地方:
vd.resize(N);
for(int i=0; i < N; ++i) vd[i] = (double)ai[i];
谢谢你的澄清!
将进行隐式转换,因此是安全的。为什么不在构造vector时初始化它呢?
std::vector<double> vd(ai, ai + N);
我认为这是安全的,因为assign是一个模板。见http://www.cplusplus.com/reference/stl/vector/assign/。实现从整型赋值双精度,这基本上与其他解决方案没有什么不同。检查/usr/include/c++/4.6/bits/stl_vector.h
的头,似乎构造器和赋值都调用相同的内部函数,_M_assign_dispatch
。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中