c++ vector *iterator++的问题。。。求解答!!!!!!

#include<iostream>#include<vector>usingnamespacestd;voidprint(vector<int>::const_iter... #include<iostream>
#include<vector>
using namespace std;

void print(vector<int>::const_iterator beg,vector<int>::const_iterator end);

void main(){

//将 0 到 10 放到 vector 中
vector<int> v;
for(int i=0;i<10;i++){
v.push_back(i);
}

print(v.begin(),v.end()); //输出 0 1 2 3 4 5 6 7 8 9
}

void print(vector<int>::const_iterator beg,vector<int>::const_iterator end)
{
while(beg!=end){

cout<<*beg++;
// 等价与 *(beg++), beg++ 后的值应该指向第二个元素,
//输出的结果应该为 1 2 3 4 5 6 7 8 9,为什么结果为 0 1 2 3 4 5 6 7 8 9

if(beg!=end) cout<<" ";
}
cout<<endl;
}
展开
 我来答
咕噜男爵
2011-09-07 · TA获得超过132个赞
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:99.1万
展开全部
首先你要知道 vector 是什么,vector是同一类型的对象的集合(容器)。
所以vector<int> v表示v是一个int类型的集合,v.push_back(i);就是将i当前值,保存到容器v中。

其次你要知道iterator 、const_iterator是什么,iterator(迭代器)是一种检查容器(vector)内元素并遍历元素的数据类型,通过迭代器可以对容器中的数据进行取值。const_iterator是迭代器的一种,只不过通过它只能读取,不能改变容器中的值。迭代器相当于下标(注意是相当于,具体内容自己去找)
所以在print函数形参中,beg和end都是只读的迭代器。

v.begin()返回容器的开始位置,v.end()返回容器的结束位置。(想像成数组)

所以这个程序的所做的操作是:将0到9放入到一个容器中,然后通过容器的迭代器(相当于指针)将这些数据取出,打印出来。

注:建议你去阅读《c++ primer》这本书很不错。希望我的答案对你理解vector和iterator会有所帮助
shuipinghouzi
2011-09-07
知道答主
回答量:4
采纳率:0%
帮助的人:6.1万
展开全部
*beg++是先取*beg,再将beg进行自加运算
追问
c++ primer 第四版 第141页中的一句:
由于后自增操作的优先级高于解引用操作,因此 *iter++ 等效与 *(iter++)

-----------------------------------------
*beg++是先取*beg,再将beg进行自加运算
*beg++ 应该是先自加,再取 * ???
追答
其实一样,i=5;i++;那么最终i=6,但i++这个表达式的结果依然是5,这个不用想到迭代器,看一下c语言书中指针的使用就可以了,要注意i++和++i的区别
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式