[C++]关于红黑树封装Set迭代器出现pair不匹配问题

文章探讨了在使用Set时遇到的错误,涉及普通迭代器到const迭代器的转换问题。作者揭示了类型不匹配的原因,并通过pair构造函数的模板参数策略找到了解决方案,即使用Node*初始化const_iterator。
摘要由CSDN通过智能技术生成

一、错误描述

这里发生错误的最大原因就是Set的普通迭代器就是const迭代器!!!

在我完成红黑树封装Set的迭代器时,出现了一个问题:

error C2440: “return”: 无法从“std::pair<__TreeIterator<T,T &,T *>,bool>”转换为“std::pair<__TreeIterator<T,const T &,const T *>,bool>”

二、问题探究

在封装时,使用的类模板来实例化,由于传入的参数不同,导致类型的不匹配

例如:vector<int>与vector<char>本质上是两个完全不同的类型,无法接收

所以在这里要转换为一个问题:

如何支持普通的iterator转换为const_iterator

 在库中,pair构造函数的模板参数U,V来初始化first和second

如果U,V类型一样,那我就调用拷贝构造

如果不一样,那么我就要保证U,V能够初始化first和second

在这里boo-》bool,Node*-》const_iterator都能实现,这就是pair的妙用

三、解决方法 

在这里我是用Node*来初始化const_iterator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值