如何引用vector<int>::iterator
比如定义一函数intsum(vector<int>::iterator&beg,vector<int>::iterator&end);为什么vector<int>::it...
比如定义一函数
int sum(vector<int>::iterator &beg,vector<int>::iterator &end);
为什么vector<int>::iterator &beg这种写法是错误的?那如果我想引用迭代器该怎么写?(就像如果引用指针可以写成int *&p;) 展开
int sum(vector<int>::iterator &beg,vector<int>::iterator &end);
为什么vector<int>::iterator &beg这种写法是错误的?那如果我想引用迭代器该怎么写?(就像如果引用指针可以写成int *&p;) 展开
展开全部
使用上的问题
估计你是这样用的
sum(vec.begin(),vec.end());
vector::begin()的定义是返回一个临时对象,因此具有const属性,
所以无法被你的函数直接调用。
如果把函数定义为
sum(const vector<int>& 。。。)就能使用,但这样你的函数sum里就不能iterator了,
所以你的调用改成
vector<int>::iterator beg = vec.begin();
vector<int>::iterator end = vec.end();
sum(beg,end);
或者你去找些typetrait的资料,可以去掉const的限制
估计你是这样用的
sum(vec.begin(),vec.end());
vector::begin()的定义是返回一个临时对象,因此具有const属性,
所以无法被你的函数直接调用。
如果把函数定义为
sum(const vector<int>& 。。。)就能使用,但这样你的函数sum里就不能iterator了,
所以你的调用改成
vector<int>::iterator beg = vec.begin();
vector<int>::iterator end = vec.end();
sum(beg,end);
或者你去找些typetrait的资料,可以去掉const的限制
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询