我正在尝试编写程序,但我遇到了vector
的一些问题。我有一个逻辑,其中vector
的值将在循环的每次迭代中进行比较。所以我初始化向量,然后将一个元素推送到每个向量。既然我在这两个向量中都有一个元素,我应该能够像下面的代码那样进行比较和迭代,但事实并非如此。可能存在错误,但很难找到。
int M = 3; // I am passing values of M and N to this function
int N = 3;
std::vector<int> X;
std::vector<int> Y;
X.push_back(1);
Y.push_back(1);
int x = 0;
for(int i = 1; i <= N; i++){
for(int j = 1; j <= M; j++){
if((X[x] <= i) && (Y[x] <= j)){
if (x > 0){
X.push_back(i);
Y.push_back(j);
x = x + 1;
}
else{
X[0] = 1;
Y[0] = 1;
x = x + 1;
}
}
}
}
for(int i = 0; i < X.size(); i++){
cout << X[i] << "; " << Y[i] << endl;
}
我使用上述程序获得以下输出。
`1; 1`
但我需要制作这个。
`1; 1`
`1; 2`
`2; 2`
答案 0 :(得分:8)
您有未定义的行为。
当x
为零时,您不会将新条目推送到向量中,但是会增加x
并且下一次迭代会访问X[1]
和Y[1]
超出范围。