为什么 C++ 中的这段代码不起作用?
Why this code in C++ doesn't work?
vector<vector<int> > v(4);
vector<int> k(4,0);
for (int i=0; i<v.size(); i++)
v.push_back(k);
for (int i=0; i<v.size(); i++) {
for (int j=0; j<k.size(); j++)
cout << v[i][j];
cout << endl;
我认为它应该可以运行,但程序没有执行任何操作。我哪里错了?
你永远在第一个 for 循环中循环,我想你想要做的是:
int main() {
// I think this is what your first for loop is trying to construct.
vector<vector<int>> v(4, vector<int>(4));
for (int i = 0; i < v.size(); ++i) {
for (int j = 0; j < v[i].size(); ++j) {
cout << v[i][j] << " ";
}
cout << endl;
}
}
当你 push_back
时,它每次都会在末尾添加一个新的(所以你有 4 个,然后是 5 个,然后是 6 个,然后等等...)。
for (int i=0; i<v.size(); i++)
v.push_back(k);
v.size会不断递增,循环运行直到内存不足!!!
vector<vector<int> > v(4);
vector<int> k(4,0);
for (int i=0; i<v.size(); i++)
v.push_back(k);
for (int i=0; i<v.size(); i++) {
for (int j=0; j<k.size(); j++)
cout << v[i][j];
cout << endl;
我认为它应该可以运行,但程序没有执行任何操作。我哪里错了?
你永远在第一个 for 循环中循环,我想你想要做的是:
int main() {
// I think this is what your first for loop is trying to construct.
vector<vector<int>> v(4, vector<int>(4));
for (int i = 0; i < v.size(); ++i) {
for (int j = 0; j < v[i].size(); ++j) {
cout << v[i][j] << " ";
}
cout << endl;
}
}
当你 push_back
时,它每次都会在末尾添加一个新的(所以你有 4 个,然后是 5 个,然后是 6 个,然后等等...)。
for (int i=0; i<v.size(); i++)
v.push_back(k);
v.size会不断递增,循环运行直到内存不足!!!