1

如何动态为 Vector 分配内存?

vector<Point> vInPts;// 我的输入向量 - 我已经转储了一些值(大小为 6)

// 对输入向量点做一些计算

vector<Point> vOutPts;// 如何为这个输出向量点动态分配内存

4

3 回答 3

4

您可能不需要动态分配向量本身。在内部,vector 将动态分配存储其元素所需的内存,并负责管理此内存。所以只需在自动存储中声明向量:

 vector<Point> vOutPts;

您可以通过调用std::vector::reserve为向量分配预定数量的内存。

如果您绝对必须动态分配向量,请确保您了解所有有关内存管理的知识,并阅读智能指针RAII

于 2013-04-17T07:02:50.683 回答
2

如果你知道你想要的大小,那么你可以分配和初始化足够的元素:

vOutPts.resize(size);

或者您可以使用该大小创建它:

vector<Point> vOutPts(size);

否则,您可以一次增加一个元素:

vOutPts.push_back(some_point);

如果您(大致)知道要推送多少个元素,那么您可以通过预先分配一些内存来提高效率,而无需初始化任何元素:

vOutPts.reserve(approx_size);
于 2013-04-17T07:06:04.967 回答
0

这边走

vector <Point> *myvect= new vector<Point>()

但不要忘记致电:

delete myvect

当你完成使用它,否则你会造成泄漏。

请注意,以这种方式分配向量本身与动态分配向量内容不同。仅当您打算在函数内创建一个向量并通过引用返回它时,才应该对向量本身进行这种动态分配。自动内存管理比动态分配对象更容易处理,更不容易出错,最重要的是更安全......因此,当你不需要时,你应该避免这种动态分配

于 2013-04-17T07:01:55.853 回答