zoukankan      html  css  js  c++  java
  • 利用swap技巧去除容器多余的容量

    假设我们预先为容器添加了一部分元素,接着用clear将它们删除,容器内部分配的存储空间实际上不会减小,改变的只是能够访问的元素个数。如下所示:

    std::vector<int> vec;
    for(int i=0;i<1000;i++)
        vec.push_back(i);
    vec.clear(); std::cout<<vec.capacity()<<std::endl;

      此时控制台会输出1066,很明显之前的存储空间没有变化。

      如果我们想要删除不必要的存储空间,可以利用swap函数:

    std::vector<int>(vec).swap(vec);
    

      系统首先生成一个内容与vec一样,而存储空间最小的容器变量,然后调用swap将二者的存储空间交换。Bingo!

      另外,swap技巧也可以用来将容器彻底清空(连同容器的存储空间)。

    std::vector<int>().swap(vec);
    

      

  • 相关阅读:
    迭代器简介
    关于判断对象是否相等的问题
    NIO
    BIO流分类介绍
    servlet简介
    http协议简介
    爬虫常用链接
    http和https协议
    爬虫的合法性研究
    爬虫介绍
  • 原文地址:https://www.cnblogs.com/wickedpriest/p/5944804.html
Copyright © 2011-2022 走看看