向量使用的异常问题

Unusual issue with vector use

本文关键字:异常 问题 向量      更新时间:2023-10-16

我试图写一个程序,我遇到了一些问题与vector。我有一个逻辑,其中vector的值将在循环的每次迭代中进行比较。我初始化向量,然后把一个元素压入每个向量。现在,由于这两个向量中都有一个元素,我应该能够像下面的代码一样进行比较和迭代,但事实并非如此。可能有bug,但是很难发现。

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`

您有未定义行为

x为零时,您不会将新条目推入向量,但是您会增加x,下一次迭代您将访问X[1]Y[1],这是越界的