如何释放vector变量

前言

使用vector时,需要释放内存空间,可以使用clear和swap进行操作。

具体操作

1. 释放vector内存空间

std::vector<cv::Point> probp;
std::vector<int> plabel;

plabel.clear();
std::vector<int>().swap(plabel);
probp.clear();
std::vector<cv::Point>().swap(probp);
注意,clear() 方法只会清空元素,不会释放内存,所以大小变换但容量不变。

2. size和capacity的理解

#include <iostream>
#include <vector>

int main() {
    // 创建一个包含一些元素的 vector
    std::vector<int> myVector = {1, 2, 3, 4, 5};

    // 输出 vector 的初始大小和容量
    std::cout << "初始大小: " << myVector.size() << std::endl;
    std::cout << "初始容量: " << myVector.capacity() << std::endl;

    // 使用 clear 方法清空 vector
    myVector.clear();

    // 输出清空后 vector 的大小和容量
    std::cout << "使用 clear 方法后大小: " << myVector.size() << std::endl;
    std::cout << "使用 clear 方法后容量: " << myVector.capacity() << std::endl;

    // 使用 swap 方法释放内存
    std::vector<int>().swap(myVector);

    // 输出使用 swap 方法后 vector 的大小和容量
    std::cout << "使用 swap 方法后大小: " << myVector.size() << std::endl;
    std::cout << "使用 swap 方法后容量: " << myVector.capacity() << std::endl;

    return 0;
}    
View Code
std::vector的大小size指的是当前容器中实际存储的元素数量,当向 std::vector 中添加或删除元素时,其大小会相应地增加或减少。
std::vector的容量capacity是指容器在不重新分配内存的情况下能够容纳的最大元素数量,需要注意的是,容量可能会大于或等于大小size,因为 std::vector 为了避免频繁的内存重新分配,会预先分配一些额外的内存空间,具体容量数值取决于编译器和实现。当向 std::vector 中添加元素,且元素数量超过当前容量时,std::vector 会自动重新分配更大的内存空间,并将原有的元素复制到新的内存区域。这个过程会导致容量的增加,通常容量会以某种倍数增长。
在任何时刻,std::vector 的大小总是小于或等于其容量。当大小等于容量时,再添加元素就会触发内存重新分配。如果预先知道需要存储的元素数量,可以使用 reserve() 函数预先分配足够的容量,避免多次内存重新分配带来的性能开销。
 

 

posted on 2018-05-03 11:17  鹅要长大  阅读(420)  评论(0)    收藏  举报

导航