永发信息网

c++ 向量迭代器

答案:1  悬赏:40  手机版
解决时间 2021-01-29 01:01
  • 提问者网友:蓝琪梦莎
  • 2021-01-28 18:54
c++ 向量迭代器
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-01-28 20:26
不要这么写

vector no;
int i;
for(i=0;i<10;i++)
no.push_back(i);

这时 no里的元素是
0 1 2 3 4 5 6 7 8 9
no.begin() 指向 0
no.end() 指向的位置是 9 后边的位置[值为垃圾]

vector ::iterator it = no.end();

这时 it 指向的位置是 9 后边的位置[值为垃圾]

for(;it!=no.begin();--it)

printf("%d ",*it);

你这样遍历 自然从 no.end() 指向的垃圾值位置开始 [值可能是0]
然后往前走
输出
0[0是垃圾值] 9 8 7 6 5 4 3 2 1

到 no.begin() 时 由于循环条件 it!=no.begin() 自然就结束循环了
输出的最后一项是 no[1]

如果 倒着遍历 vector 使用 reverse_iterator
vector no;
int i;
for(i=0;i<10;i++)
no.push_back(i);
vector ::reverse_iterator it = no.rbegin();
for(;it!=no.rend(); ++it)
printf("%d ",*it);追问原来如此
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯