加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – “强”迭代器指针/引用

发布时间:2020-12-16 07:11:57 所属栏目:百科 来源:网络整理
导读:有没有“强大的”迭代器这样的东西.我的意思是一个迭代器,它坚持它引用的值而不是它所在的地址,这样如果值被交换到另一个地址,迭代器将继续在这个新地址中指向它;无论它在数据结构中移动到哪里? 解决方法 是的,不是.但为什么?你想要什么std :: iter_swap(s
有没有“强大的”迭代器这样的东西.我的意思是一个迭代器,它坚持它引用的值而不是它所在的地址,这样如果值被交换到另一个地址,迭代器将继续在这个新地址中指向它;无论它在数据结构中移动到哪里?

解决方法

是的,不是.但为什么?你想要什么std :: iter_swap(strong_a,strong_b);去做?

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

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

最后,你可以使用一个特殊的包装类来实现这样的东西,它可以让你做一些像std :: vector< strong_pointable< int>>其中strong_pointable< int>通常会像int一样行动,但是让我们提供一种方法来获得一个特殊的“强指针”或任何你想要它的东西,以便在它们被移动构造时跟踪它们.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读