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