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

时间:2015-02-26 23:06:41

标签: c++ vector stl

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;

我认为它应该有效,但程序不会执行任何操作。我哪里错了?

2 个答案:

答案 0 :(得分:3)

你永远在第一个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个,那么......)。

答案 1 :(得分:1)

for (int i=0; i<v.size(); i++)
    v.push_back(k);

v.size将继续增加,循环将一直运行,直到你内存不足!!!