如何释放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; }
std::vector的大小size指的是当前容器中实际存储的元素数量,当向 std::vector 中添加或删除元素时,其大小会相应地增加或减少。std::vector的容量capacity是指容器在不重新分配内存的情况下能够容纳的最大元素数量,需要注意的是,容量可能会大于或等于大小size,因为 std::vector 为了避免频繁的内存重新分配,会预先分配一些额外的内存空间,具体容量数值取决于编译器和实现。当向 std::vector 中添加元素,且元素数量超过当前容量时,std::vector 会自动重新分配更大的内存空间,并将原有的元素复制到新的内存区域。这个过程会导致容量的增加,通常容量会以某种倍数增长。在任何时刻,
std::vector 的大小总是小于或等于其容量。当大小等于容量时,再添加元素就会触发内存重新分配。如果预先知道需要存储的元素数量,可以使用 reserve() 函数预先分配足够的容量,避免多次内存重新分配带来的性能开销。完
各美其美,美美与共,不和他人作比较,不对他人有期待,不批判他人,不钻牛角尖。
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
浙公网安备 33010602011771号