- 包括array在内的每个顺序容器都有一个front成员函数,而除forward_list之外的所有顺序容器都有一个back成员函数。这两个操作分别返回首元素和尾元素的引用。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 在解引用一个迭代器或者调用front或back之前检查是否有元素
if(!c.empty())
{
// val和val2是c中第一个元素的拷贝
// c.begin()返回的是地址,所以要加解引用操作符。
// c.front()返回的是元素的引用
auto val = *c.begin(),
val2 = c.front();
// val3和val4是c中最后一个元素值的拷贝
// c.end()返回的是尾元素之后的地址,所以地址减1以后,解引用才是尾元素的引用。
auto last = c.end();
auto val3 = *(--last);
// 不能递减forward_list迭代器
auto val4 = c.back();
// forward_list不支持
}
访问成员函数返回的是引用: 在容器中访问元素的成员函数(即,front、back、下标、at)返回的都是引用。如果容器是一个const对象,则返回的是const引用。如果容器不是const的,则返回值是普通引用。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(!c.empty())
{
c.front() = 42;
//将42赋予c中的第一个元素
auto &v = c.back();
//获取指向最后一个元素的引用
v= 1024;
//改变c中的元素
auto v2 = c.back();
//
v2不是一个引用,它是c.back()的一个拷贝
v2 = 0;
//未改变c中的元素,要想改变c中元素的值,必须记得将变量定义成引用类型
}
下标操作和安全的随机访问
复制代码
1
2
3
4
5
6
7
8
vector<string> svec;
//空vector
cout << svec[10];
//运行时错误:svec中没有元素!
// 如果我们希望确保下标是合法的,可以使用at成员函数。at成员函数类似下标运算符,但如果
// 下标越界,at会抛出一个out_of_range异常。
cout << svec.at(0);
//抛出一个out_of_range异常。
最后
以上就是自信河马最近收集整理的关于c++primer之顺序容器(访问元素)的全部内容,更多相关c++primer之顺序容器(访问元素)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复