c++容器(学习记录五)

1. 概念及定义

  • 什么是容器?

在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对象的指针,这种对象类型就叫容器。容器就是保存其它对象的对象,也是用来管理某类对象。

举个例子,书架就类似与一个容器,在这个书架上我们可以放书本、杂志等,书架可以看作是个对象,容器中可以放入不同的对象,容器本身也是一个对象,之所以选择用容器,就是因为方便管理。总而言之,c++是面向对象的,系统有很多中不同类型的对象组成,这个对象实力化后,对象必须分门别类的放到这些集合类中,这个集合类就是各种各样的容器。


  • 容器类型:vector、list、deque

在这里仅对vector & deque作探讨。

vector : 是一种序列式容器,事实上和数组差不多,但它比数组更优越。数组不能够动态拓展,在程序运行过程中容易浪费内存和数组越界。vector相当于可拓展的数组,随机访问快,但在中间插入和删除慢,末端插入和删除快,支持随机访问。

vector<int>  vecTemp  //定义一个整型vector
for (int i=0; i<6; i++)
{
    vecTemp.push_back(i);
}

deque : 是由一段一段的定量连续空间构成,一旦要在deque的前端和尾增加新空间,配置一段定量连续空间,串在整个头部和尾部即可,deque在分段的连续空间维护整体连续并提供随机存取的接口。可在双端进行pop/push


2. 写法
  • vector<类型> 标识符;//空的向量
  • vector<类型> 标识符(容量); //vector v(10);
  • vector<类型> 标识符(最大容量,初始所有值)
  • vector< vector >v; //二维向量
  • v.push_back(100); //添加元素
  • int size = v.size(); //元素个数
  • bool isEmpty = v.empty(); //判断是否为空
  • v.pop_back(); //删除末尾元素
  • vector::iterator iter = v.begin(); //获取迭代器首地址
  • v1.clear(); //清空元素

  • 遍历
    int  length = vec1.size();
     for ( int  i=0;i<length;i++)
    {
       cout<<vec1[i];
    }
    cout<<endl<<endl;
     // 迭代器法
    vector< int >::const_iterator iterator = vec1.begin();
     for (;iterator != vec1.end();iterator++)
    {
       cout<<*iterator;

    }
3. 案例

  • 在容器最后移除和插入数据
int main(int argc, char *argv[])
{
    vector<int>obj;//创建一个向量存储容器 int
    for(int i=0;i<10;i++) // push_back(elem)在数组最后添加数据 
    {
        obj.push_back(i);
        cout<<obj[i]<<",";    
    }
 
    for(int i=0;i<5;i++)//去掉数组最后一个数据 
    {
        obj.pop_back();
    }
 
    cout<<"\n"<<endl;
 
    for(int i=0;i<obj.size();i++)//size()容器中实际数据个数 
    {
        cout<<obj[i]<<",";
    }
 
    return 0;
}

  • clear容器中数据
    vector<int>obj;
    for(int i=0;i<10;i++)//push_back(elem)在数组最后添加数据 
    {
        obj.push_back(i);
        cout<<obj[i]<<",";
    }
 
    obj.clear();//清除容器中所以数据
    for(int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<endl;
    }
参考

1.各容器简单介绍
2. https://blog.csdn.net/u014465639/article/details/70241850
3.C++ vector 容器浅析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值