一、错误描述
这里发生错误的最大原因就是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