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

来源:互联网 发布:美工是干嘛的 编辑:程序博客网 时间:2024/06/02 10:15

二、标准库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;//空的vectorcout<<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
原创粉丝点击