安全地分配向量到向量<双>?双>
为了初始化特定计算的变量,我必须从整数数组中为它们分配值。 所以我这样做:
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];
谢谢你的澄清!
To initialize variables for a certain computation I have to assign them values from an integer array.
So I do:
vector<double> vd;
int ai[N]; // Filled somewhere else
vd.assign(ai, ai+N);
This works under gcc 4.6.1 Linux. But is it always correct? Or should I return to the evergreen:
vd.resize(N);
for(int i=0; i < N; ++i) vd[i] = (double)ai[i];
Thanks for clarifying!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为这是安全的,因为分配是一个模板。请参阅http://www.cplusplus.com/reference/stl/vector/assign/< /a>.该实现从整数分配双精度数,这基本上与您的其他解决方案没有什么不同。检查
/usr/include/c++/4.6/bits/stl_vector.h
中的标头,构造函数和分配函数似乎都调用相同的内部函数_M_assign_dispatch
。I think this is safe, since assign is a template. See http://www.cplusplus.com/reference/stl/vector/assign/. The implementation assigns doubles from ints, which basically is not different to your other solution. Checking the header in
/usr/include/c++/4.6/bits/stl_vector.h
it seems the constructer and assign both call the same internal function,_M_assign_dispatch
.将进行隐式转换,因此是安全的。为什么不在构建期间初始化向量:
Implicit conversion will take place so it is safe. And why not initializing vector during its construction: