如何动态地为矢量分配内存<Point>?

How to allocate memory to Vector<Point> dynamically?

本文关键字:内存 分配 lt Point gt 何动态 动态      更新时间:2023-10-16

如何动态分配内存给Vector ?

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

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

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

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

 vector<Point> vOutPts;

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

如果你必须动态分配向量,确保你知道所有关于内存管理的知识,并阅读智能指针和RAII。

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

vOutPts.resize(size);

或者你可以创建一个大小:

vector<Point> vOutPts(size);

否则,每次只能增长一个元素:

vOutPts.push_back(some_point);

如果你(粗略地)知道你想要推送多少元素,那么你可以通过事先分配一些内存来提高效率,而不初始化任何元素:

vOutPts.reserve(approx_size);

这样

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

但是别忘了打电话:

delete myvect

当你使用完它,否则你会创建一个泄漏。

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