"strong"迭代器指针/引用

A "strong" iterator pointer/reference

本文关键字:引用 迭代器 strong 指针      更新时间:2023-10-16

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

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

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

至于"实现一个可以很好地与标准库配合使用的方法",这取决于您心目中的标准库的哪一部分。你不能把东西添加到容器中(除非你能想出一种方法来用分配器或其他东西实现你想要的东西)。但如果你以某种方式创建了自己的算法,你就会与标准算法有一定程度的兼容性。

最后,您可能可以用一个特殊的包装器类来实现这样的东西,这将允许您执行类似于std::vector<strong_pointable<int>>的事情,其中strong_pointable<int>的行为通常类似于int,但让我们提供一种获得特殊"强指针"或您想调用的任何东西的方法,以便在构建移动时跟踪事物。

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