zoukankan      html  css  js  c++  java
  • STL容器之vector容器巧用swap收缩空间

    1.原理图

    实例:

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    #include <vector>
    
    //巧用swap收缩空间
    void test01()
    {
        vector<int> v;
        for (int i = 0; i < 100000; i++)
        {
            v.push_back(i);
        }
        cout << "v的容量:" << v.capacity() << endl;    //13W+
        cout << "v的大小:" << v.size() << endl;        //10W
    
        v.resize(3);        //重新分配大小 大小变了 空间还是13W+
        cout << "v的容量:" << v.capacity() << endl;    //13W+
        cout << "v的大小:" << v.size() << endl;        //3
    
        //用swap收缩空间
        vector<int>(v).swap(v);     //匿名对象 拷贝构造一个临时对象 其分配了v.size()个元素的内存空间,即capacity为v.size() 
                                    //然后与v交换数据, 匿名对象销毁
        cout << "v的容量:" << v.capacity() << endl;    //3
        cout << "v的大小:" << v.size() << endl;        //3
        //用swap清除内存空间
        vector<int>().swap(v); // 可以清除v的内存空间
        cout << "v的容量:" << v.capacity() << endl;    //0
        cout << "v的大小:" << v.size() << endl;        //0
    }
    int main()
    {
        test01();
        system("Pause");
        return 0;
    }

    结果:

  • 相关阅读:
    Hadoop编译源码
    大数据生态体系
    crontab任务调度
    yum概述配置
    如何识别图像边缘
    神经网络入门
    Linux命令locate
    B1299 [LLH邀请赛]巧克力棒 博弈论
    B1090 [SCOI2003]字符串折叠 区间dp
    B1068 [SCOI2007]压缩 区间dp
  • 原文地址:https://www.cnblogs.com/yifengs/p/15189874.html
Copyright © 2011-2022 走看看