9.3 顺序容器操作

9.3.2 访问元素

顺序容器提供了4种访问元素的方式:c.front()、c.back()、c[n]、c.at(n)。对于存储空间连续的容器(vector、string、deque和array)来说,这4中方式都可以用,可以通过front和back获得首、尾元素,也可以通过下标运算符和at成员函数访问任意位置的元素。而存储空间不连续的list只能用begin和end成员函数获得首、尾元素的引用,只能通过迭代器递增递减访问中间的元素!forward_list更可怜,只能用begin获得首元素,不能用end获得尾元素,而且forward_list的迭代器不支持递减运算,因此也不能通过尾后迭代器递减来访问尾元素。总之, forward_list是不支持除首元素外的元素的直接访问的!

注意访问成员函数返回的是引用,因此可以通过它们改变容器内元素的值!

顺序容器的front和back成员函数是通过return *c.begin()和return *--c.end()实现的,因此对空容器使用front和back,会报错“...iterator not dereferencable”!

对空容器使用front和back,以及下标运算符的下标越界,会产生未定义的行为。而使用at函数时下标越界,会抛出out_of_range的异常。

发现一个问题:就是容器的元素类型不能是const的,而容器本身可以定义成const的,就是说“vector<const int> v”是非法的,而“const vector<int>”是合法的!此时容器的大小和元素的值都不能改变。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值