C++ 如何删除向量?

C++ 如何删除向量?,c++,opencv,vector,C++,Opencv,Vector,我有一个向量 std::vector<cv::Mat>* images = new std::vector<cv::Mat>(); images.push_back(image0); images.push_back(image1); std::vector<std::vector<cv::Mat>*> allImages; allImages.push_back(images); std::vector*images=new std::vec

我有一个向量

std::vector<cv::Mat>* images = new std::vector<cv::Mat>();
images.push_back(image0);
images.push_back(image1);

std::vector<std::vector<cv::Mat>*> allImages;
allImages.push_back(images);
std::vector*images=new std::vector();
图像。推回(图像0);
图像。推回(图像1);
std::矢量大图像;
所有图像。向后推(图像);

如何释放内存?

我对OpenCV不太熟悉,但删除向量后,您将调用向量的析构函数,而该析构函数将调用其所有元素的析构函数


如果<代码> CV::Mat < /C> >(而且会很奇怪),只需删除向量。< /P> < P> C++,可以使用<代码> CULL()/代码>释放您的向量的内存并删除所有对象。因为在代码中,它是指向向量的指针,只要确保清除的是向量而不是指针,它应该类似于

images->clear()

为什么有指向向量的指针?为什么不干脆
std::vector image
?另外,向量是否分配了
new
?只需删除向量即可。OpenCV Mat使用引用计数,因此如果不在其他位置使用,所有图像都会自动释放,因为删除向量将调用每个元素的析构函数。如果向量包含cv::Mat*元素,则必须手动删除每个元素。因为我希望对象超出当前范围。图像类型使用某种句柄/头和函数手动分配和释放像素内存并不罕见。但是cv::Mat通过引用计数和自动释放像素内存来实现这一点。