如何动态地为Vector分配内存?
vector<Point> vInPts;
//我的输入向量 - 我已经转储了一些值(大小为6)
//对输入矢量点进行一些计算
vector<Point> vOutPts;
//如何为此输出向量点动态分配内存
答案 0 :(得分:4)
您可能无需动态分配矢量本身。在内部,向量将分配动态存储其元素所需的内存,并负责管理此内存。所以只需在自动存储中声明向量:
vector<Point> vOutPts;
您可以通过调用std::vector::reserve为该向量分配预定数量的内存。
如果绝对必须动态分配矢量,请确保了解内存管理的所有内容,并阅读smart pointers和RAII。
答案 1 :(得分:2)
如果您知道所需的大小,则可以使用以下命令分配和初始化足够的元素:
vOutPts.resize(size);
或者您可以使用该尺寸创建它:
vector<Point> vOutPts(size);
否则,您可以一次将向量增加一个元素:
vOutPts.push_back(some_point);
如果您(大致)知道要推送多少元素,那么您可以通过事先分配一些内存来提高效率,而无需初始化任何元素:
vOutPts.reserve(approx_size);
答案 2 :(得分:0)
这样
vector <Point> *myvect= new vector<Point>()
但别忘了打电话:
delete myvect
当你完成使用它,否则你会造成泄漏。
请注意,以这种方式分配矢量本身与分配矢量内容的动态不同。只有当您打算在函数内部创建向量并通过引用返回时,才应该对向量本身进行动态分配。自动内存管理更容易处理,更不容易出错,最重要的是比动态分配对象更安全...因此,无论何时您不需要,都应该避免这种动态分配