当我把array改成vector时,程序不正常

When I change array to vector, the program is abnormal

当我使用 array 时,以下代码运行良好。我尝试用std::vector替换array,但发现程序经常出现异常,需要运行多次。我错过了什么吗?我正在使用 g++ 10.3。

#include <iostream>
#include <vector>

int main() {
    int n = 3;
    for (int k = 1; k <= 4; ++k) {
//        int *A = new int[k]();
        std::vector<int> A(k, 0);
        int i = 0;
        for (; i >= 0; A[i]++) {
            for (int j = 0; j < k; ++j) {
                std::cout << A[j] << " ";
            }
            std::cout << "\n";
            for (i = k - 1; i >= 0 && A[i] == n - 1; i--)
                A[i] = 0;
        }
    }
    return 0;
}

在这个 for 循环的第三部分

for (; i >= 0; A[i]++) {
               ^^^^^^

内部循环

后变量i可以等于-1
for (i = k - 1; i >= 0 && A[i] == n - 1; i--)

其中使用相同的变量 i(例如,当 k 等于 1)。

所以使用向量还是数组并不重要。该程序有未定义的行为。