C++ Primer学习笔记- 第三章:标准库类型之二

二、标准库vector类型

1.包含头文件 #include<vector>

vector不是一种数据类型,而只是一个类模板。vector<int> 、 vector<CStudent>是数据类型

2.vector的定义和初始化

它的初始化有如下几种方式:

    Vector<T> v1 ;         // 默认构造函数v1为空
    Vector<T> v2(v1) ;  // v2是v1的一个副本
    Vector<T> v3(n, i) ; // v3包含n个值为i的元素 参数 T 如果是类类型则一定要有拷贝构造函数(未定义的情况下系统会自动分配一个) 
    Vector<T> v4(n) ;    // v4含值初始化的元素个副本 参数 T 如果是类类型则一定要有默认构造函数(未定义的情况下系统会自动分配一个) 如果是内置类型则分配n个0

对于类类型如果不能满足红色标示的要求编译会失败。 关于类类型的拷贝构造函数和默认构造函数后续章节有介绍


3.vector对象的操作

    v.push_back(t) ;          // 在数组的最后添加一个值为t的数据
    v.size() ;                      // 当前使用数据的大小 返回vector<T>::size_type类型的长度值,例如:vector<int>::size_type,其意义类似上面讲过的string::size_type
    v.empty() ;                  // 判断vector是否为空
    v[n] ;                           // 返回v中位置为n的元素 和string类型下标操作类似 是个左值操作
    v1=v2 ;                        // 把v1的元素替换为v2元素的副本
    v1==v2 ;                     // 判断v1与v2是否相等
    !=、<、<=、>、>= ;  // 保持这些操作符惯有含义


4.vector下标操作

vector下标操作与string下标操作类似,需要注意的是:

1)下标操作的vector<T>不能为空,必须是已存在的元素才能用下标操作

vector<int> ivec;//空的vector
cout<<ivec[0];//错误
因此下标操作不能用于添加元素
vector<int> ivec;
for(vector<int>::size_type ix=0;ix!=10;++ix)
<span style="white-space:pre">	</span>ivec[ix]=ix;//err
<span style="white-space:pre">	</span>ivec.push_back(ix);ok
2)下标操作不能越界


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值