iterator和pair怎么转换?
vector 难道不支持下面这种转换?
typedef pair<int, int> markers;
vector<markers> marks;
marks.erase(&marks[maxfields], marks.end());
提示第一个参数不能从pair转换为iterator,通过这种获取方式不就是iterator了吗?
vector 难道不支持下面这种转换?
typedef pair<int, int> markers;
vector<markers> marks;
marks.erase(&marks[maxfields], marks.end());
提示第一个参数不能从pair转换为iterator,通过这种获取方式不就是iterator了吗?
error C2664: “std::_Vector_iterator<_Ty,_Alloc> std::vector<_Ty>::erase(std::_Vector_iterator<_Ty,_Alloc>,std::_Vector_iterator<_Ty,_Alloc>)”: 不能将参数 1 从“std::pair<_Ty1,_Ty2> *__w64 ”转换为“std::_Vector_iterator<_Ty,_Alloc>”
vs2005 提示这个是怎么回事?
&marks[maxfields] 的类型是 markers *
marks.end() 的类型是 class iterator
一个指针怎么能转换为一个 class 呢?当然 VC6 这种不符合 C++ 标准的编译器倒是可能可以。
应该把 marks.end() 换成 &marks[maxfields] + marks.size() - maxfields
这样吧
marks.erase(marks.begin()+ maxfields, marks.end());
楼上的不对,iterator 只重载了 ++ 和 --,你用来 + 一个数肯定不能通过。
vector的iterator为随机迭代器,可以加上一个数的。