C&C++   发布时间:2019-10-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 使用已知数量的元素填充向量:在构造函数中指定其大小或使用reserve方法?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想通过从流中读取单个元素来创建一些复杂类型的向量.我事先知道矢量大小.是否更好地指定向量构造函数中的元素数量或使用reserve方法?这两个中哪一个更好?
int myElementCount = stream.ReadInt();
vector<MyElement> myVector(myElementCount);
for (int i = 0; i < myElementCount; i++)
{
    myVector[i] = stream.ReadMyElement();
}

要么

int myElementCount = stream.ReadInt();
vector<MyElement> myVector;
myVector.reserve(myElementCount);
for (int i = 0; i < myElementCount; i++)
{
    myVector.push_BACk(stream.ReadMyElement());
}

那么我只是创建一个int或其他简单类型的向量的情况.

解决方法

这取决于MyElement是什么,特别是它的运算符=,所以它通常是“尝试两者并使用更快的一个”.还有第三种选择,使用c 11和emplace_BACk,特别是如果MyElement很重.

作为数据点,对于int或double我发现使用构造函数(或resize())和[]更快.具体来说,这样循环对编译器更容易进行矢量化.

大佬总结

以上是大佬教程为你收集整理的c – 使用已知数量的元素填充向量:在构造函数中指定其大小或使用reserve方法?全部内容,希望文章能够帮你解决c – 使用已知数量的元素填充向量:在构造函数中指定其大小或使用reserve方法?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。