初始化堆上的向量数组,c ++

时间:2014-11-08 07:11:18

标签: c++ arrays vector initialization

我的目标是在堆上创建一个向量数组(每个向量的容量为10个整数)。我可以轻松地创建我的数组:

vector<int>* test = new vector<int>[NUM_VERTS];

然而,这会创建一个空向量数组。我知道每个向量将存储至少10个整数,所以我想创建大小为10的向量,以避免让它们多次重新调整大小(我在一个大文件中读取,因此效率很重要)。如何修改上述语句以使其符合我的要求?

作为旁注,我正在使用VS 2013并且正在努力使用它的调试器。当我运行调试器并查看上面test的内容时,它会显示它指向的区域的内存地址,但不会显示存储在该地址的内容。有谁知道我如何查看内容而不是地址?

由于

PS我正在堆上而不是堆栈上创建向量数组,因为数组非常大(只有不到一百万个条目)。当我尝试在堆栈上创建它时,我遇到了堆栈溢出错误。

1 个答案:

答案 0 :(得分:2)

您可以创建vector vector与数组不同的std::vector< std::vector<int> > test(NUM_VERTS, std::vector<int>(10)); 但是对于您的用例,它应该是等效的:

vector

没有必要用new分配它,因为std::vector<int> *p = &test[0]; 元素已经在堆上了。

如果你需要指向第一个包含的向量的指针,你可以使用

p

并使用vector,好像它是一个堆分配的向量数组({{1}}的所有元素都保证在内存中是连续的。)