zoukankan      html  css  js  c++  java
  • vector中删除元素后,如何有效的释放无效元素的内存

    .erase()只是删除了元素内容,并不能改变容量大小;

    举例:

    35 void testvector()
    36 {
    38     vector v;
    39     v.push_back(1);
    40     v.push_back(2);
    41     cout << "v size = " << v.size() << " v capacity = " << v.capacity()  << endl;
    42     v.erase(v.begin());
    43     cout << "v size = " << v.size() << " v capacity = " << v.capacity()  << endl;
    44     vector(v).swap(v); // 清除v而且最小化它的容量
    45     cout << "v size = " << v.size() << " v capacity = " << v.capacity()  << endl;
    47 }

    结果如下:
    [hfx@didkey1 bin]$ ./test
    v size = 2 v capacity = 2
    v size = 1 v capacity = 2
    v size = 1 v capacity = 1

    .clear()函数,只能清空内容,不能改变容量大小
    c. vector容器删除不自动释放内存,那么它存在内存泄露???不是的,vector在析构函数的时候,对内存进行了释放。
    d. 如果要想在删除内容的同时释放内存,那么你可以选择deque容器。
    e. 关于vector:
    vector相当于c++中的数组,数组在初始化的时候也需要给它一个数组空间大小,vector申请的时候将预留一个空间,比如10,在元素超过10的时候,vector自动将大小
    扩大到两倍,并且将元素拷贝过去。

    用法举例:
     vector(v).swap(v);将v的内存空洞清除
     vector().swap(v);清空vec

     
     
  • 相关阅读:
    git 删除远程分支
    测试模板--接口测试
    测试模板--PC浏览器兼容性测试
    Mock作用
    Docker实践--搭建JIRA平台
    Docker实践--搭建分布式UI测试环境
    Docker实践--搭建HttpRunnerManager测试平台
    Docker实践--搭建Yapi测试平台
    微博爬虫实践---搜索关键词
    接口实践--演练地址集合
  • 原文地址:https://www.cnblogs.com/mmziscoming/p/5806922.html
Copyright © 2011-2022 走看看