当我把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
)。
所以使用向量还是数组并不重要。该程序有未定义的行为。
当我使用 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
)。
所以使用向量还是数组并不重要。该程序有未定义的行为。