每日复习笔记4.20

C++复习笔记

c++ primer笔记

vector类型

  1. 序言
    vector是同一类型的对象的集合,每个对象都有一个对应的整数索引值。这一点和数组十分地相似,但是个人认为vector就是一个长度可变的数组。vector是要给类模板,具体后面再具体说。

2.vector对象的定义和初始化

方式含义
vector v1vector保存类型为T的对象,默认构造函数v1为空
vector v2(v1)将v2初始化为v1的副本(可以用一个vector对象初始化另一个)
vector v3(n,i)v3中包含n个值为i的T类型的元素
vector v4(n)v4含有值为默认初始化值的n个T类型的元素
vector<int> ivec1;  //一个数据类型为int的空的vector
vector<int> ivec2(ivec1);  //将ivec2初始化为ivec1的副本
vector<string> svec(ivec);  //error,svec和ivec所包含的数据类型不同
vector<int> ivec(10,-1);  //一个vector对象,包含了十个值为-1的元素
vector<string> svec(10,"hi!");  //一个vector对象,包含了十个值为“hi!”的元素

vector对象的重要属性就在于可以再运行时高效的添加元素,相比之下数据在运行时是不能改变数组中元素的个数的。

  1. vector对象的操作
操作含义
v.empty()如果v为空,则返回true,否则返回false
v.size()返回v中元素的个数
v.push_back(t)在v的末尾增加一个值为t的元素
v[n]返回v中下标为n的元素,注意vector中下标从0开始
v1 = v2将v1中的元素替换成v2中元素的副本
v1 == v2如果v1和v2相等,则返回true
!=,<,<=,>,>=保持原有的含义

1)size()函数
关于size()函数需要注意一点的是它的返回值类型,这个size_type类型和vector类型中元素的类型有关。即:

vector<int>::size_type  //OK
vector::size_type  //error

2)向vector中添加元素
push_back函数是向vector对象的末尾添加元素

//使用push_back函数向一个vector对象的末尾添加元素
string word;
vector<string> text;  //建立一个数据类型为string的空vector对象
while(cin >> word){
	text.push_back(word);  //每次从标准输入中读取数据存入text的末尾
}

3)下标操作
我们不能通过下标操作向vector对象中添加元素。使用下标操作时,下标只能用于获取已经存在的元素。

迭代器iterator

除了通过下标操作访问容器(其中vector也是容器的一种)内的元素之外,也可以通过使用迭代器的方式或许或者遍历容易中的元素。

  1. 容器的迭代器iterator类型
    一般来说迭代器的类型也是和容器本身的类型是有关系的
vector<int>::iterator iter  //OK
vector::iterator iter  //error

这意味着每一种容易都定义了属于自己的迭代器类型。

  1. beginend操作
    每种迭代器分别定义了一对名为beginend的函数,用于返回迭代器。其中begin返回的迭代器指向容器的第一个元素;而end返回的迭代器指向容器中的末端元素的下一个位置。
    实际上end操作返回的迭代器不指向容器中的任何一个实际的元素,而只是起到一个哨兵的作用,指示已经处理完了容器中的所有元素。

  2. vector迭代器的自增和解引用操作
    迭代器类型可以使用解引用操作符(*操作符)来访问迭代器所指向的元素。

//将迭代器iter所指向的元素赋值为0
*iter = 0;
vector<int> ivec(5,-1); 
vector<int>::iterator iter = ivec.bgein();

*iter == ivec[0];  //TRUE

这里说明*iter和ivec[0]指向的是同一个元素。

关于自增操作
如果对一个迭代器u低昂进行自增操作,则是把容器中的迭代器“向前移动一个位置”,如果迭代器iter指向第一个元素,++iter则指向第二个元素。

需要注意的是,由于end操作所返回的迭代器并不只想容易中的任何一个元素,所以不能对它使用解引用操作和自增操作。

  1. 关于迭代器的比较操作(==和!=)
    简单来说,如果两个迭代器对象指向同一个元素,则他们想等,否则不想等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值