为什么 C++ 中的这段代码不起作用?

Why this code in C++ doesn't work?

本文关键字:代码 不起作用 段代码 C++ 为什么      更新时间:2023-10-16
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 将继续增加,循环将运行,直到内存不足!!