学习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改变容器的大小不超过当前容器的容量,容器容量不变,反之则按其内部规则动态扩增容量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赴星辰大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值