STL学习——顺序容器

STL学习——顺序容器

我以vector为例,总结一下STL顺序容器的基本使用。
vector
是顺序容器,它在很多方面类似于我们通常使用的数组。但是它比数组具有很多很好的特性。它使用安全,具有数组所不具备的自增长的特性,使得vector在现代软件设计中占据重要地位。
本讲分五个部分,分别是初始化、迭代器、容器访问、容器操作和其他内容。
说明:
1
、本文均只涉及vector常用的知识,不求全面只求常用。^-^
2
、本文如果没有特别声明,则所用的容器为vector<int> nVec;
3
、版权所有!

一、初始化
vector
常用的初始化方法有:
1
、创建空容器
vector<int> nVec;
2
、创建在迭代器范围内的容器
vector<int> nVec(iBegin, iEnd);

3、创建n个元素为c的容器
vector<int> nVec(n, c);

4、创建有n个值初始化的容器
vector<int> nVec(n);

我最近想到一个问题,vector好像不能像数组一样批量初始化。数组可以这样初始化:
int a[] = {1, 2, 3, 4, 5};

但是vector不能类似的用vector<int> nVec = {1, 2, 3, 4, 5};
作为一个优秀的容器,难道vecotr就不具备初始化的能力吗?
答案是可以的,我们可以这样:
int a[] = {1, 2, 3, 4, 5}; //
先批量初始化一个数组
vector<int> nVec(a, a + 5);    //
利用迭代器初始化
这样我们就能批量初始化容器了。需要注意的是,这里的a+5处于a的界外。就像是vector的函数end()一样,它返回的是最后一个元素后的位置。这里也需要这样。

二、迭代器
迭代器的本质就是指针。vector的迭代器的获取是使用begin()end()获取的。
迭代器支持的操作有++, --, +, -, >, <, >=, <=, ==, !=以及*操作。
迭代器包括iteratorconst_ iterator。其中后者是只读性迭代器。

三、容器访问
首先说明一点,容器访问设计的操作是不修改容器内容的操作。
vector
的容器访问有取下标操作[]、迭代器的解引用*begin()end()size()empty()back()front()at()等。
解释一下,size函数返回容器中元素的个数,empty函数返回容器是否为空的布尔值,back函数返回容器最后一个元素的引用,front返回容器第一个元素的引用,at返回下标为函数参数的元素的引用。貌似back()front()at()不应该放在这里,因为它们返回的都是引用值。
begin()
end()返回值的类型是vector<int>::iterator
size()
返回值的类型是vector<int>::size_type
back()
front()at()返回值的类型是vector<int>::reference

四、容器操作
插入元素:insert()push_back()push_front()
删除元素:erase()pop_back()pop_front()
清空容器:clear()
调整长度:resize()

五、其他
vector
中包括的类型别名包括
size_type, iterator, const_iterator, reverse_iterator, const_reserve_tierator, difference_type, value_type, reference, const_reference


以后将继续补充,就算是我学习STL的笔记吧呵呵。欢迎大家批判!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值