【发布时间】:2014-04-10 01:11:49
【问题描述】:
我正在阅读关于 raw_storage_iterator 组件的 TC++PL。使用这个组件,我们获得了性能优势,因为它避免了分配(更昂贵)并使用复制构造。在我看来,它应该用在序列/容器中,我们可以有大量元素,因此分配调用的数量可能会产生很大的影响。
理论上它很清楚,在我看来这个组件对容器类型类很有用。但是我想了解我们应该在哪里使用这个组件(带有实际示例)来获得它的性能优势?
【问题讨论】:
-
inb4 "cplusplus.com 很烂,你不敢链接到它";它在那里说,它已被使用,因此您可以使用未初始化的内存作为算法的目标。性能应该不会比带有后插入迭代器的保留向量好。除非你正在编写非常底层的代码,否则你不需要这个迭代器。
-
@DanielKO 带有后插入迭代器的保留向量必须在每次插入时进行大小检查。编译器找出不需要大小检查的可能性相对较小。您将在检查中获得良好的分支预测,但仍会小于
raw_storage_iterator写作。 -
顺便说一下,它在 C++17 中已被弃用,并在 C++20 中被删除。所以建议不要使用。
标签: c++ performance c++11 copy-constructor assignment-operator