c++: vector

vector:

  1.   概念:
    数组: 简单、高效
    但是,静态数组、new动态创建的数组,都难以检测下标越界的错误,从而在实际运行中造成困扰
    因而,C++标准库提供了被封装的数组——vector,而且这种被封装的数组可以具有各种类型
              vector 不是一个类,而是一个类模板
     2.     定义动态数组的形式:
               vector<元素类型>数组对象名(数组长度);
                    <>中的类型:数组元素的类型
                    数组长度:一个表达式,表达式可以包含变量
           细节:
                    1) 用vector定义的数组对象的所有元素都会被初始化。
                              如果数组的元素类型是基本类型,所有元素都会被0初始化
                              如果数组元素为类类型,则会调用类的默认构造函数初始化(保证类具有默认构造函数)
                    2) 初值也可自己指定,但所有元素只能指定相同的初值
                           eg: vector<元素类型>数组对象名(数组长度,元素初值);
            访问形式:
                    数组对象名[下标表达式];
            注意: vector数组对象的名字表示的就是一个数组对象,而非数组的首地址。因为数组对象不是数组,而是封装了数组的对象
                       该数组对象具有一个重要的成员:size(): 它会返回数组的大小     


     3. 一维vector
               eg:  vector<int >  arr;
               可以使用   arr.push_back(value) 向vector中添加元素
                               arr.pop_back(value)弹出元素
          二维vector
     eg:  vector<vector <int> > cluster_list (变量名)          注意红色符号前面的空格
1). 用二维首先得指定一个长度(如果这个长度是知道的)
eg: cluster_list.resize(指定长度)

2). 如果长度事先不知道
     eg: vector<int> a;
          cluster_list.push_back(a);

二维vector直接初始化为零
二维数组的行数M,列数N,那么这样就可以了vector<vector<int>> a<M,vector<typedef>(N,0)>.其中typedef为元素的类型


    4. 使用场景:对用于不需要对数据进行随机增、删的场合
                         因为vector底层实现时存储在连续的地址上,随机的删除,增加会伴随着大量数据的移动,以及vector的重建。

                          #include<vector>

    5. 清空vector的三种方法
     1). clear:清空元素,但不回收空间;
     2). erase:  用来删除一个元素;
     3). swap:  清除容器并回收内存;
         

    6. 使用迭代器遍历vector:(STL为容器的遍历提供迭代器)
vector<int>::iterator itor;
itor=cluster_list[i].begin(); 指向容器的第一个位置
itor=cluster_list[i].end();  指向容器最后一个元素的下一个位置

关联容器是能够通过键值来查找和读取元素的容器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值