首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++矢量效率

c++矢量效率
EN

Stack Overflow用户
提问于 2019-10-19 15:25:26
回答 1查看 887关注 0票数 0

标准要求向量实现能够在运行时有效地添加元素。由于向量有效增长,因此定义特定大小的向量通常是不必要的--而且可能导致性能较差。此规则的例外情况是,如果所有元素实际上都需要相同的值。如果需要不同的元素值,通常更有效的方法是定义一个空向量,并将元素添加为我们在运行时需要知道的值。

阅读C++素数(C++ 11版)。有人能解释一下为什么会发生这种事吗。我的意思是,想象一下,我们需要在std::中添加大约100万个不同的数字。,为什么如果我把它们放到没有定义近似大小的向量中,将是比定义更“有效”的方法?我的意思是,我对向量大小和容量有一个模糊的理解,我相信每次向量超过其容量时,所有元素都被复制到较大的大小数组(n *2或n* 1.5附近的某个地方)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-19 17:06:06

对于简单类型(如ints ),使用所需元素数声明向量可能比使用push_back更快,因为向量不需要进行任何重新分配。但是,对于具有构造函数的复杂类,这样做将默认地构造所有元素,然后覆盖它们,从而浪费时间。

在这两种情况下,最好的解决方案是使用reserve为所有元素同时分配空间,而无需构造这些元素。然后,您可以使用push_back而不必担心重新分配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58465152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档