我有一个容器C的一些元素。在我的算法中,这些元素需要分成两个子组C1和C2,它们将在此处进行排序。现在,为了避免存储相同数据的两倍,这两个亚组可以是在C++中,迭代器失效规则是否也适用于所有std容器的指针?
- 的std ::套指针指向元件在容器Ç,或
- 的std ::指向容器中的元素的迭代器的集合C。
我知道它会与下面的Invalidation rules当迭代器工作良好,但是我将只使用C1和C2套取消引用的实际值和移动指针/迭代从C1到C2或其他方式,没有别的。
概念上,它更有意义,我使用指针,但我不知道两两件事:
能使用指针实际上除了一些性病容器一些内存?(因为迭代器是指针的泛化)
Invalidation rules是否也适用于所有std容器的原始指针?
参考规则也适用于指针 – Danh
这些规则提到了“迭代器和引用”,它也包括原始指针。为了回答你的第一个问题,迭代器和大多数情况下的原始指针被编译成相同的东西,迭代器没有任何开销。我确信有一些“异常情况”是例外情况,但在98%的情况下,编译器会将任何迭代器的开销优化为最终二进制文件中的简单指针运算。不加这个作为答案,因为我确信有人会更专业地将它与C++标准和类似的东西联系起来,我懒得做:) – adam10603
所以如果两种解决方案都是相同的记忆方式(在98%的情况下),是否有任何理由先使用另一种? – Riko