美文网首页
容器中的成员函数swap

容器中的成员函数swap

作者: Junior888 | 来源:发表于2018-10-09 12:43 被阅读0次

在容器vector中,其内存占用的空间是只增不减的,比如说首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个。所有内存空间在vector析构时回收。

一般,我们都会通过vector中成员函数clear进行一些清除操作,但它清除的是所有的元素,使vector的大小减少至0,却不能减小vector占用的内存。要避免vector持有它不再需要的内存,这就需要一种方法来使得它从曾经的容量减少至它现在需要的容量,这样减少容量的方法被称为“收缩到合适(shrink to fit)”。

swap交换技巧实现内存释放思想:vector()使用vector的默认构造函数建立临时vector对象,再在该临时对象上调用swap成员,swap调用之后对象myvector占用的空间就等于一个默认构造的对象的大小,临时对象就具有原来对象v的大小,而该临时对象随即就会被析构,从而其占用的空间也被释放。

std::vector<T>(X).swap(X)
作用相当于:
{
  std::vector<T>  temp(X);
  temp.swap(X);
}

相关文章

  • 017 非成员版本的 swap

    在新标准库中,容器既提供成员函数版本的 swap,也提供非成员版本的 swap。统一使用非成员版本的 swap 是...

  • 容器中的成员函数swap

    在容器vector中,其内存占用的空间是只增不减的,比如说首先分配了10,000个字节,然后erase掉后面9,9...

  • 第9章:顺序容器

    #1.顺序容器概述 #2.容器库概览迭代器容器类型成员begin和end成员容器定义和初始化赋值和swap容器大小...

  • C++ STL 之 array(二)

    今天我们继续更新 C++ STL 中 array 容器的使用 array迭代器 array 容器定义了成员函数 b...

  • 22. C++ STL pair类模板

    在C++关联容器的基础是pair 类模板,我们先了解 STL 中的 pair 类模板,因为关联容器的一些成员函数的...

  • 今日python学习

    今天主要学习了两个函数:swap(替换函数),changeA(修改函数) 1:swap函数: 2:changeA函...

  • 冒泡

    首先来声明个swap模板函数 //定义模板函数 template void swap(T...

  • [转]深度探索C++对象模型(4)

    类中函数的深度探索 类中包含的函数主要有三种:static成员函数、nostatic成员函数、virtual成员函...

  • 程序调用过程和堆栈的关系,为什么要传地址而不传值

    bug.c 使用gdb调试,main函数反汇编的代码 swap函数的反汇编代码 在执行到call swap函数之前...

  • swap (thread)

    函数 std::swap (thread) 介绍 声明 void swap (thread& x, thread&...

网友评论

      本文标题:容器中的成员函数swap

      本文链接:https://www.haomeiwen.com/subject/xlpeaftx.html