gpt4 book ai didi

c++ - 在堆上初始化 vector 数组,C++

转载 作者:行者123 更新时间:2023-11-30 03:59:41 27 4
gpt4 key购买 nike

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

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

但是,这会创建一个空 vector 数组。我知道每个 vector 将存储至少 10 个整数,所以我想首先创建大小为 10 的 vector ,以避免让它们多次调整自身大小(我正在读取一个大文件,因此效率很重要)。我怎样才能修改上面的语句,让它做我想做的事?

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

谢谢

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

最佳答案

您可以创建一个由 vector 组成的 vector,它与数组不同,但对于您的用例来说它应该是等价的:

std::vector< std::vector<int> > test(NUM_VERTS, std::vector<int>(10));

不需要用 new 分配它,因为 vector 元素已经在堆上了。

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

std::vector<int> *p = &test[0];

并使用 p 就好像它是一个堆分配的 vector 数组(vector 的所有元素保证在内存中是连续的)。

关于c++ - 在堆上初始化 vector 数组,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26814771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com