C++的vector内存管理成员函数的行为测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/89784692

一 代码

#include <iostream>
#include <vector>
using namespace std;
int main(){
    vector<int> iVec;
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;
    
    /*1个元素,容器容量为1*/
    iVec.push_back(1);
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;
    
    /*2个元素,容器容量为2*/
    iVec.push_back(2);
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;
    
    /*3个元素,容器容量为4*/
    iVec.push_back(3);
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;
    
    /*4个元素,容器容量为4*/
    iVec.push_back(4);
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;
    
    /*5个元素,容器容量为8*/    
    iVec.push_back(5);
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;
    
    /*6个元素,容器容量为8*/    
    iVec.push_back(6);
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;

    /*7个元素,容器容量为8*/    
    iVec.push_back(7);
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;

    /*8个元素, 容器容量为8*/    
    iVec.push_back(8);
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;

    /*9个元素, 容器容量为16*/    
    iVec.push_back(9);
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;

    /* vs2005/8 容量增长不是翻倍的,如
    9个元素   容量9
    10个元素 容量13 */

    /* 测试effective stl中的特殊的交换 swap() */
    cout<<"容器大小:"<<iVec.size()<<"容量:"<<iVec.capacity()<<endl;
    vector<int>(iVec).swap(iVec);

    cout<<"临时的vector<int>对象的大小为:"<<(vector<int>(iVec)).size()<<endl;
    cout<<"临时的vector<int>对象的容量为: " <<(vector<int>(iVec)).capacity()<<endl;
    cout<<"交换后,当前vector的大小为:"<<iVec.size()<<endl;
    cout<<"交换后,当前vector的容量为:"<< iVec.capacity()<<endl;

    return 0;
}

二 运行

[root@localhost charpter03]# g++ 0316.cpp -o 0316
[root@localhost charpter03]# ./0316
容器大小:0容量:0
容器大小:1容量:1
容器大小:2容量:2
容器大小:3容量:4
容器大小:4容量:4
容器大小:5容量:8
容器大小:6容量:8
容器大小:7容量:8
容器大小:8容量:8
容器大小:9容量:16
容器大小:9容量:16
临时的vector<int>对象的大小为:9
临时的vector<int>对象的容量为:9
交换后,当前vector的大小为:9
交换后,当前vector的容量为:9

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/89784692