STL 容器和迭代器连载7_容器大小的操做

/*- ==========================================================
*     文件名  :STL_con_ite_7.cpp
*     开发人员:袁培荣
*     当前版本:1.0.0.2595
*     建立时间:2012-05-26
*     修改时间:2012-05-26
*     功能说明:STL 容器和迭代器连载7_容器大小的操做
*     版权说明:版权全部 袁培荣 YuanPeirong 
*     编译环境:Windows 7(x64) SP1 简体中文专业版
*     编译器:  Visual Studio 2010 SP1(中文旗舰版)
                MinGW 20120426 GNU GCC 4.6.2
                Visual C++ 6.0 SP6(中文企业版)
- ==========================================================*/

#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <string>

using std::cout;
using std::endl;
using std::vector;
using std::list;
using std::deque;
using std::string;

int main(int argc, char* argv[])
{
    //首先,请你看本文的标题,是容器大小的操做,
    //而非顺序容器大小的操做,也就是说:
    //本文的内容适用全部容器,而不单单是顺序容器。
    
    //操做1: 
    //size()成员函数返回当前容器中元素的个数
    //返回类型为 容器名<T>::size_type
    cout<<"操做1:"<<endl;
    vector<int> v1;
    vector<string> v2(10);
    vector<int>::size_type sv1=v1.size();
    vector<string>::size_type sv2=v2.size();
    cout<<"v1.size()="<<sv1<<endl;
    cout<<"v2.size()="<<sv2<<endl;
    //注意:不能用 vector<int>::size_type类型来接收 v2.size()
    //由于一个是vector<int>类,另外一个是vector<string>类,没有任何关系。
    //若是容器元素有增减,咱们就要从新获取其size。
    v1.push_back(10); //在最尾加入一个10
    v2.pop_back();    //把最尾元素删除
    cout<<"增减容器元素后:"<<endl;
    sv1=v1.size(); //从新获取容器的大小
    sv2=v2.size(); //从新获取容器的大小
    cout<<"v1.size()="<<sv1<<endl;
    cout<<"v2.size()="<<sv2<<endl;
    
    //操做2:
    //max_size() 成员函数返回当前容器所能容纳元素数量的最大值
    //(注:包括可从新分配内存) 返回类型为 容器名<T>::size_type
    //这个值可能与编译器,编译选项,操做系统,类型T等的不一样而不一样
    cout<<"操做2:"<<endl;
    vector<int>::size_type mv1=v1.max_size();
    vector<string>::size_type mv2=v2.max_size();
    cout<<"v1.max_size()="<<mv1<<endl; //你的输出值不必定和个人同样
    cout<<"v2.max_size()="<<mv2<<endl; //mv2和mv1也不必定相同
    //max_size()函数的返回值和当前容器元素的个数没有关系
    //改变当前容器元素的个数和结果不变
    v1.push_back(15); //在最尾加入一个10
    v2.pop_back();    //把最尾元素删除
    cout<<"增减容器元素后:"<<endl;
    mv1=v1.max_size();
    mv2=v2.max_size();
    cout<<"v1.max_size()="<<mv1<<endl;
    cout<<"v2.max_size()="<<mv2<<endl;
    //注意:对同一个容器对象,size函数和max_size函数的返回类型是同样的
    //其实,咱们不用定义 mv1和mv2,能够分别重用sv1和sv2
    cout<<"mv1用sv1替换,mv2用sv2替换后:"<<endl;
    sv1=v1.max_size();
    sv2=v2.max_size();
    cout<<"v1.max_size()="<<sv1<<endl;
    cout<<"v2.max_size()="<<sv2<<endl;
    
    //操做3:
    //empty()成员函数,若是当前容器没有容纳任何元素,
    //则返回true,不然返回false.
    cout<<"操做3:"<<endl;
    if(v1.empty())
        cout<<"v1是空的"<<endl;
    else
        cout<<"v1不是空的"<<endl;
    v1.clear(); //清空v1
    cout<<"清空v1后:"<<endl;
    if(v1.empty())
        cout<<"v1是空的"<<endl;
    else
        cout<<"v1不是空的"<<endl;
    
    //操做4:
    //resize(n)成员函数改变当前容器的大小为n
    //若是n小于原来的大小,则删除多出来的元素
    //若是n大于原来的大小,则添加的元素采用值初始化
    //若是n等于原来的大小,则不操做
    cout<<"操做4:"<<endl;
    v1.push_back(10); //操做3中已经将v1清空,如今为其添加两个元素
    v1.push_back(20); 
    cout<<"v1.size()="<<v1.size()<<endl;
    int i;
    for(i=0; i!=v1.size(); i++)
        cout<<"v1["<<i<<"]="<<v1[i]<<endl;
    v1.resize(1);
    cout<<"调整v1的大小为1后:"<<endl;
    cout<<"v1.size()="<<v1.size()<<endl;
    for(i=0; i!=v1.size(); i++)
        cout<<"v1["<<i<<"]="<<v1[i]<<endl;
    v1.resize(5);
    cout<<"再调整v1的大小为5后:"<<endl;
    cout<<"v1.size()="<<v1.size()<<endl;
    for(i=0; i!=v1.size(); i++)
        cout<<"v1["<<i<<"]="<<v1[i]<<endl;
        
    //操做5:
    //resize(n,t)成员函数改变当前容器的大小为n
    //若是n小于原来的大小,则删除多出来的元素
    //若是n大于原来的大小,则添加的元素都为t
    //若是n等于原来的大小,则不操做
    cout<<"操做5:"<<endl;
    v1.clear();       ////清空v1
    v1.push_back(10); //为其添加两个元素
    v1.push_back(20); 
    cout<<"v1.size()="<<v1.size()<<endl;
    for(i=0; i!=v1.size(); i++)
        cout<<"v1["<<i<<"]="<<v1[i]<<endl;
    v1.resize(1, 100);
    cout<<"v1.resize(1, 100)后:"<<endl;
    cout<<"v1.size()="<<v1.size()<<endl;
    for(i=0; i!=v1.size(); i++)
        cout<<"v1["<<i<<"]="<<v1[i]<<endl;
    v1.resize(5, 100);
    cout<<"v1.resize(5, 100)后:"<<endl;
    cout<<"v1.size()="<<v1.size()<<endl;
    for(i=0; i!=v1.size(); i++)
        cout<<"v1["<<i<<"]="<<v1[i]<<endl;
    
    return 0;
}


//============================
//运行结果:
//============================
// 操做1:
// v1.size()=0
// v2.size()=10
// 增减容器元素后:
// v1.size()=1
// v2.size()=9
// 操做2:
// v1.max_size()=1073741823
// v2.max_size()=1073741823
// 增减容器元素后:
// v1.max_size()=1073741823
// v2.max_size()=1073741823
// mv1用sv1替换,mv2用sv2替换后:
// v1.max_size()=1073741823
// v2.max_size()=1073741823
// 操做3:
// v1不是空的
// 清空v1后:
// v1是空的
// 操做4:
// v1.size()=2
// v1[0]=10
// v1[1]=20
// 调整v1的大小为1后:
// v1.size()=1
// v1[0]=10
// 再调整v1的大小为5后:
// v1.size()=5
// v1[0]=10
// v1[1]=0
// v1[2]=0
// v1[3]=0
// v1[4]=0
// 操做5:
// v1.size()=2
// v1[0]=10
// v1[1]=20
// v1.resize(1, 100)后:
// v1.size()=1
// v1[0]=10
// v1.resize(5, 100)后:
// v1.size()=5
// v1[0]=10
// v1[1]=100
// v1[2]=100
// v1[3]=100
// v1[4]=100
//============================
相关文章
相关标签/搜索