学习C++之STL:关于vector的容量、大小的相关操作

今天来学习vector容器的容量和大小方面的操作,主要有以下几个函数原型:

empty();//判断容器是否为空
capacity();//获取容器的容量
size();//返回容器中元素的个数
resize(int num);//重新指定容器的长度为num,若容器边长,则以默认值填充新位置
                //若容器变短,则末尾超出容器长度的元素被删除
resize(int num,elem);//重新指定容器的长度为num,若容器边长,则以elem值填充
                     //新位置
                     //若容器变短,则末尾超出容器长度的元素被删除

接下来构造场景示范这些函数的使用:

  #include <iostream>
  #include <vector>
  using namespace std;

  void outVector(vector<int> &vec)//方便查看数组元素
  {
    for(vector<int>::iterator it=vec.begin();it!=vec.end();it++)
      cout<<*it<<" ";
    cout<<endl;
  }

  void test()//创造测试环境
  {
    vector<int> v;//先判断v是否为空
    if(v.empty()){
      cout<<"v为空"<<endl;//此时应为空
    }
    else cout<<"v不为空"<<endl;

    for(int i=0;i<10;i++)//于是填充v
      v.push_back(i+1);
    if(v.empty()){       //判断v是否为空
      cout<<"v为空"<<endl;
    }
    else cout<<"v不为空"<<endl;//此时应不为空
    cout<<"v初态:"<<endl;//打印此时v的各种数据
    outVector(v);//元素一览,应为1 2 ... 10
    cout<<"v的容量:"<<v.capacity()<<endl;//看看容量,应大于等于10
    cout<<"v的大小:"<<v.size()<<endl;//看看大小,应为10

    v.resize(7);
    cout<<"调用resize,使容器变短"<<endl;
    outVector(v);//应为1 2 ... 7
    cout<<"v的容量:"<<v.capacity()<<endl;//得出结论:容器变短容量不变
    cout<<"v的大小:"<<v.size()<<endl;//应为7

    v.resize(12);
    cout<<"调用resize(int num),使容器变长"<<endl;
    outVector(v);//应为1 2 ... 7 0 0 0 0 0
    cout<<"v的容量:"<<v.capacity()<<endl;//得出结论:容器变长容量可能不变
    cout<<"v的大小:"<<v.size()<<endl;//应为12

    v.resize(17,3);
    cout<<"调用resize(int num,elem),使容器变长"<<endl;
    outVector(v);//应为1 2 ... 7 0 0 0 0 0 3 3 3 3 3
    cout<<"v的容量:"<<v.capacity()<<endl;//得出结论:容器变长容量可能变大
    cout<<"v的大小:"<<v.size()<<endl;//应为17
  }

  int main()
  {
    test();
    return 0;
  }

运行结果:
在这里插入图片描述总结:
数值型元素默认值一般为0。(把vector改为vector可验证)
当resize改变容器的大小不超过当前容器的容量,容器容量不变,反之则按其内部规则动态扩增容量。

发布了17 篇原创文章 · 获赞 36 · 访问量 484

猜你喜欢

转载自blog.csdn.net/qq_44643644/article/details/105138776
今日推荐