向量数组的反向输出给出奇怪的结果

约翰·特德斯科

我开始学习更多关于向量的知识。我被告知要做的第一个练习练习之一是使用“迭代器格式”输出数组的内容。作为一个额外的练习,我被告知尝试使用与指针运算相同的方法反向打印数组。

#include <iostream>
#include <vector>
using namespace std;
int main(){
 vector<int> arr;
 arr.push_back(1);
 arr.push_back(2);
 arr.push_back(3);
 arr.push_back(4);

 for(vector<int>::iterator it = arr.end(); it >= arr.begin(); it--){
 cout << *it << endl;
 }
}

输出如下:

-820575969
4
3
2
1

程序正在运行,它以相反的顺序打印出数组中的数字。但是为什么第一件事是输出一些很长的负数呢?谢谢你的帮助。

R,约翰

MFisherKDX

向量结束迭代器未引用有效数据。有效数据来自[begin, end)(半闭半开范围)。所以你不能指望*操作员工作。事实上,这样做是未定义的行为。

相反,要向后迭代,请使用reverse_iterators arr.rbegin()arr.rend()并使用++运算符,如下所示:

for(std::vector<int>::reverse_iterator it = arr.rbegin(); it != arr.rend(); ++it)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章