文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>vector的capacity和reverse成员函数

vector的capacity和reverse成员函数

时间:2010-12-21  来源:longmenyu

预备知识:
1.为了使vector容器实现快速的内存分配,其实际分配的容量要比当前所需的空间多一些;vector预留了这些额外的存储区,用于存放新添加的元素。
2.容器的capacity(容量)与size(长度)的区别:size指容器当前拥有的元素个数;capacity指容器在必须分配新存储空间之前可以存储的元素总数。
3.reverse操作告诉vector容器应该预留多少元素的存储空间。

程序清单:

#include <iostream>
#include <vector>

using namespace std;

int main(int argc,char *argv[])
{
     /*空vector容器的size为0,capacity也为0*/
    vector<int> ivec;
    cout << "The size of ivec is: " << ivec.size() <<endl
         << "The capacity of ivec is: " << ivec.capacity() <<endl;
         
    /*give ivec 25 elements*/
    /*当在vector中插入元素时,容器的size就是所添加的元素个数,而其capacity
       必须至少等于size,但通常比size值更大*/
    for(vector<int>::size_type ix=0; ix!=25; ++ix)
    {
        ivec.push_back(ix);    
    }
    cout << "The size of ivec is: " << ivec.size() << endl
         << "The capacity of ivec is: " << ivec.capacity() <<endl;
         
    /*set capacity to at least 50;might be more*/
    ivec.reserve(50); //预留50个元素的存储空间

    cout << "The size of ivec is: " << ivec.size() << endl
         << "The capacity of ivec is: " << ivec.capacity() << endl;
         
    /*add elements to use up the excess capacity*/
    /*只使用了预留的容量,vector没做任何内存分配工作,所以capacity不变*/
    while(ivec.size() != ivec.capacity())
    {
        ivec.push_back(0);    
    }
    cout << "The size of ivec: " << ivec.size() << endl
         << "The capacity of ivec: " << ivec.capacity() << endl;
         
    /*add one more element*/
    /*如果预留的容量已耗尽,再添加新的元素,vector必须为自己重新分配存储空间*/
    /*每当vector容器不得不分配新的存储空间时,以加倍当前容量的分配策略实现重新分配*/
    ivec.push_back(51);
    cout << "The size of ivec: " << ivec.size() << endl
         << "The capacity of ivec: " << ivec.capacity() << endl;
         
    return 0;
}

程序执行结果:
obe-240 /home/eagle> g++ -o capacity capacity.cpp
obe-240 /home/eagle> ./capacity
The size of ivec is: 0
The capacity of ivec is: 0
The size of ivec is: 25
The capacity of ivec is: 32
The size of ivec is: 25
The capacity of ivec is: 50
The size of ivec: 50
The capacity of ivec: 50
The size of ivec: 51
The capacity of ivec: 100
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载