Sign-up....

iterator和pair怎么转换?

vector 难道不支持下面这种转换?

typedef pair<int, int> markers;

vector<markers> marks;

marks.erase(&marks[maxfields], marks.end());

提示第一个参数不能从pair转换为iterator,通过这种获取方式不就是iterator了吗?

[173 byte] By [msdn] at [2007-8-15 8:45:17]
# 1 Re: iterator和pair怎么转换?

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 提示这个是怎么回事?

hyslam at 2006-2-1 0:58:16 >
# 2 Re: iterator和pair怎么转换?

&marks[maxfields] 的类型是 markers *

marks.end() 的类型是 class iterator

一个指针怎么能转换为一个 class 呢?当然 VC6 这种不符合 C++ 标准的编译器倒是可能可以。

应该把 marks.end() 换成 &marks[maxfields] + marks.size() - maxfields

ikiki at 2006-2-1 18:11:58 >
# 3 Re: iterator和pair怎么转换?

这样吧

marks.erase(marks.begin()+ maxfields, marks.end());

sftk at 2006-2-2 13:07:32 >
# 4 Re: iterator和pair怎么转换?

楼上的不对,iterator 只重载了 ++ 和 --,你用来 + 一个数肯定不能通过。

ikiki at 2006-2-3 16:53:30 >
# 5 Re: iterator和pair怎么转换?

vector的iterator为随机迭代器,可以加上一个数的。

sftk at 2006-2-3 19:03:55 >

C/C++

All Classified