C++ STL 顺序容器访问最后一个元素的方法
2015-05-16 10:00
176 查看
遇到个需求,需要实现访问list的最后一个元素,不想通过遍历获取(因为list可能很长)。于是寻找如何方便的访问list的最后一个元素。C++ Primer上面没有很明确的说明,只是说了迭代器 iterator的操作方法和范围。范围是[begin,end),操作有++,--。
于是大胆尝试iterator it = list.end();it--;竟然神奇的获得了想要的结果。后来转念一想,如果迭代器指向end,然后迭代器再++会怎么样?或者迭代器指向begin然后--会怎么样?测试了下,直接抛出超出范围异常。看来STL做的还挺严谨的。
STL最好对这种用法作出说明,虽然很细节,但是很有用。
最后简单说下为什么会有这个需求。需要用STL list实现环形链表,当链表中的第1个元素需要找其前任的时候。会发现找到是链表中的最后一个元素。
这个故事告诉我们,实践很重要,文档有时候不能概括全部细节。
于是大胆尝试iterator it = list.end();it--;竟然神奇的获得了想要的结果。后来转念一想,如果迭代器指向end,然后迭代器再++会怎么样?或者迭代器指向begin然后--会怎么样?测试了下,直接抛出超出范围异常。看来STL做的还挺严谨的。
STL最好对这种用法作出说明,虽然很细节,但是很有用。
最后简单说下为什么会有这个需求。需要用STL list实现环形链表,当链表中的第1个元素需要找其前任的时候。会发现找到是链表中的最后一个元素。
这个故事告诉我们,实践很重要,文档有时候不能概括全部细节。
相关文章推荐
- C++ STL容器遍历删除元素的方法
- 【C/C++】顺序容器访问元素和删除元素
- c++中在顺序容器中访问、插入、删除元素的操作
- STL 容器和迭代器连载8_访问顺序容器的元素
- STL 容器和迭代器连载8_访问顺序容器的元素
- STL 容器和迭代器连载8_访问顺序容器的元素
- C++ multimap容器访问同一键值元素的不同方法
- C++ 顺序容器的操作(5) 访问元素 back、front、下标操作符、at
- STL 容器和迭代器连载8_访问顺序容器的元素
- C++语法基础--顺序容器(三)--关系操作符,容器大小的操作,访问元素,删除元素,查找元素
- C++ 顺序容器访问元素
- c++中在顺序容器中访问、插入、删除元素的操作
- c++primer之顺序容器(添加元素)
- c++之vector(容器)初始化、操作、顺序访问
- STL序列式容器中删除元素的方法和陷阱 二
- STL序列式容器中删除元素的方法和陷阱二
- STL集合容器set按照由小到大或者由大到小的顺序存放元素
- 删除元素【C++】顺序容器 Vector 注意事项
- STL序列式容器中删除元素的方法和陷阱 三
- STL序列式容器中删除元素的方法和陷阱三