Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 向量数组的反向输出,产生奇怪的结果_C++ - Fatal编程技术网

C++ 向量数组的反向输出,产生奇怪的结果

C++ 向量数组的反向输出,产生奇怪的结果,c++,C++,我从学习向量开始。我被告知要做的第一个练习之一是使用“迭代器格式”输出数组的内容。作为一个额外的练习,我被告知尝试使用与指针算法类似的方法反向打印数组 #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_

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

#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;
 }
}
程序正在工作,它正在以相反的顺序打印数组中的数字。然而,为什么第一件事是输出一些长的负数?谢谢你的帮助

R, John

向量的迭代器未引用有效数据。有效数据来自
[begin,end)
(半封闭半开放范围)。因此,您不能期望其上的
*
运算符工作。事实上,这样做是未定义的行为

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

for(std::vector<int>::reverse_iterator it = arr.rbegin(); it != arr.rend(); ++it)
for(std::vector::reverse_迭代器it=arr.rbegin();it!=arr.rend();+it)
向量的迭代器不引用有效数据。有效数据来自
[begin,end)
(半封闭半开放范围)。因此,不能指望它上面的
*
运算符工作。事实上,这样做是未定义的行为

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

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

你应该使用
rbegin()
rend()
。你应该使用
rbegin()
rend()
。我明白了。非常感谢你的帮助。你说的“半封闭半开放范围”是什么意思?@499602D2,我在用我明白了。非常感谢你的帮助。你说的“半封闭半开放范围”是什么意思?@499602D2,我正在使用