多维std :: vector(C ++)的内存分配

时间:2012-01-29 20:47:35

标签: c++ memory-management stdvector

让我们拥有

std::vector <std::vector <int>> myVec;
myVec.resize(100);
myVec[0].push_back(1);
myVec[0].push_back(2);

当我用断点破坏程序时,我发现每个 myVec [] 的大小和容量都是零。此外,当我尝试访问myVec[0][0]时,会出现访问冲突错误。这怎么可能?

P.S。:我正在使用VS 10

1 个答案:

答案 0 :(得分:1)

您的代码段似乎完全正确。如果您遇到访问冲突问题,则问题出在其他地方。

以下是一个例子:

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
    vector<vector<int>> myVec;
    myVec.resize(100); // inserts 100 empty vectors into myVec
    myVec[0].push_back(1);
    myVec[0].push_back(2);
    cout << myVec[0][0] << ' ' << myVec[0][1] << endl;
    myVec[99].push_back(3);
    cout << myVec[99][0] << endl;
    return 0;
}

输出:

1 2
3

如果有人因使用调整大小填充空向量而感到困惑,请检查this

希望这会有所帮助;)