Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.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++_Vector - Fatal编程技术网

C++ 在二维向量中迭代

C++ 在二维向量中迭代,c++,vector,C++,Vector,这是我的问题。我希望迭代start和length变量指定的行,这两个变量都是整数值。但是,下面的代码给了我一个分段错误。如何指定要迭代的行 请注意:我只想要每一行的值。如果有更好的方法,请通知我 vector<int>::iterator j; vector< vector<int> >::iterator i; vector< vector<int> > twoD; vector<double> A; for(i = (

这是我的问题。我希望迭代start和length变量指定的行,这两个变量都是整数值。但是,下面的代码给了我一个分段错误。如何指定要迭代的行

请注意:我只想要每一行的值。如果有更好的方法,请通知我

vector<int>::iterator j;
vector< vector<int> >::iterator i;
vector< vector<int> > twoD;
vector<double> A;

for(i = (twoD.begin() + 1 + start); i != (twoD.begin() + start + 1 + length); i++)
    for(j = (*i).begin(); j !=(*i).end(); j++)
        printf(" %d  \n", *j);

如果二维数组中的整数大于或等于双向量A的大小,则将尝试访问越界索引


换句话说,如果是这样的话:*j>=A.size,你将出界。

在几个for循环之后,你的i将大于twoD。这意味着你将出界。 千万不要把这叫做:

i != (twoD.begin() + start + 1 + length)
相反,只需键入如下内容:

i != (twoD.end)

也不要使用i++。相反,只需使用++i。更安全一点。

为什么要在开始和长度上加1?seg故障在哪里?你检查过*j的值了吗?所以在纸上把它写下来,找出你的出界点。很简单,[]中的行数正好等于twoD中的行数。从技术上讲,这不应该超出界限。而且,*j也不大于A中的行数。感谢您的回复,但我希望它仅从行开始到行开始+长度运行。我正在添加1,因为我不需要第0行的内容。因此,twoD.end不是一个选项。
i != (twoD.end)