A"强大"迭代器指针/引用

时间:2015-04-29 09:18:41

标签: c++

有没有"强大的"迭代器。我的意思是一个迭代器,它坚持它引用的值而不是它所在的地址,这样如果值被交换到另一个地址,迭代器将继续在这个新地址中指向它;无论它在数据结构中移动到哪里?

1 个答案:

答案 0 :(得分:1)

是和否。但为什么?您希望std::iter_swap(strong_a, strong_b);做什么?

正如Karoly Horvath指出的那样,你可以实现自己的容器,它有自己的迭代器(Iterator只是一个概念,而不是任何一种类型)。

至于实现一个可以很好地使用标准库的方法",它取决于你想到的标准库的哪个部分。你不能把东西添加到容器中(除非你能找到一种方法来实现你想要的Allocators或其他东西)。但如果你以某种方式创建了自己的,那么你就可以与标准算法保持一定的兼容性。

最后,你可以使用一个特殊的包装类来实现这样的东西,它可以让你做std::vector<strong_pointable<int>>之类的事情,其中​​strong_pointable<int>通常会像int一样,但是让我们提供一种特殊的方法&#34;强大的指针&#34;或者你想要的任何东西,它会跟踪事物,因为它们是移动构造的。

但要求这是一件奇怪的事情。如果你想要这个功能,我怀疑你做错了。