现在的位置: 首页 > 综合 > 正文

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

2019年11月20日 ⁄ 综合 ⁄ 共 1134字 ⁄ 字号 评论关闭

二、标准库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)下标操作不能越界

抱歉!评论已关闭.