"strong"迭代器指针/引用
A "strong" iterator pointer/reference
有"强"迭代器这样的东西吗。我的意思是一个迭代器,它坚持它引用的值,而不是它所在的地址,这样,如果值被交换到不同的地址,迭代器将继续在这个新地址中指向它;而不管它在数据结构中移动到哪里?
std::iter_swap(strong_a, strong_b);
做什么?
正如Karoly Horvath所指出的,您可以实现自己的容器,该容器有自己的迭代器(迭代器只是一个概念,而不是任何一种类型)。
至于"实现一个可以很好地与标准库配合使用的方法",这取决于您心目中的标准库的哪一部分。你不能把东西添加到容器中(除非你能想出一种方法来用分配器或其他东西实现你想要的东西)。但如果你以某种方式创建了自己的算法,你就会与标准算法有一定程度的兼容性。
最后,您可能可以用一个特殊的包装器类来实现这样的东西,这将允许您执行类似于std::vector<strong_pointable<int>>
的事情,其中strong_pointable<int>
的行为通常类似于int,但让我们提供一种获得特殊"强指针"或您想调用的任何东西的方法,以便在构建移动时跟踪事物。
但这是一个奇怪的要求。如果你想要这个功能,我怀疑你做错了。
相关文章:
- 不明白迭代器,引用和指针失效,一个例子
- C 地图 - 自引用迭代器
- 如何在find_if谓词中引用迭代器
- 尝试取消引用迭代器的分段错误
- 如何通过引用迭代器的解引用使幂等性
- 双取消引用迭代器的返回类型
- 正在返回与对象相同的取消引用迭代器
- 取消引用迭代器会导致'can not convert'错误,而它似乎不应该
- 通过取消引用迭代器将Vector写入文件
- 为什么我不能取消引用迭代器?
- 为什么我需要取消引用迭代器
- STL集合的去引用迭代器
- 递增解引用迭代器
- c++在解引用迭代器时x++与x = x+ 1的区别
- 指针向量解引用迭代器时出现段错误
- 标准如何处理容器插入函数中的自引用迭代器?
- 作为boost::bind复合链的一部分的解引用迭代器
- 解引用迭代器(c++)
- C++类型的去引用迭代器
- std::for_each等效项,它不取消引用迭代器