C++ iterator 问题 为什么会报 vdi 和 j vector iterators incompatible ???
usingnamespacestd;typedefintdata_type;voidMax_Heapify(vector<data_type>v,vector<data_...
using namespace std;
typedef int data_type ;
void Max_Heapify(vector<data_type> v,vector<data_type>::iterator j)
{
size_t i = 0;
vector<data_type>::iterator vdi = v.begin();
while (vdi!=j)
{
++i;
++j;
}
} 展开
typedef int data_type ;
void Max_Heapify(vector<data_type> v,vector<data_type>::iterator j)
{
size_t i = 0;
vector<data_type>::iterator vdi = v.begin();
while (vdi!=j)
{
++i;
++j;
}
} 展开
2个回答
展开全部
这是Iterator的设计原则,不同对象的Iterator是不具有可比性的,就算它们是同一个类型也不行。
Iterator的相等性测试必须让它们指向同一个可迭代对象。
你的程序逻辑一定是有问题的,正常的逻辑不可能需要不同对象的迭代器进行比较。
Iterator的相等性测试必须让它们指向同一个可迭代对象。
你的程序逻辑一定是有问题的,正常的逻辑不可能需要不同对象的迭代器进行比较。
追问
但是我调用的对象是同一个,我是这样用的 Max_Heapify (v,v.begin()); 为什么不行呢?
追答
因为你v传进函数不是用引用啊,实际上函数里面的v是调用拷贝构造函数的复制品。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询