STL列表访问倒数第二个元素
STL list access to next-to-last element
如何在不创建临时列表和修改列表的情况下,将迭代器移到STL列表中倒数第二个元素?是否可以只说:--(--mylist.end())
?或者,由于前缀递减,这会改变列表的end
迭代器吗?
请注意,通常情况下,--mylist.end()
不能保证为每个容器编译。
例如,如果在发布模式中使用std::vector
或std::array
,则mylist.end()
可能是一个原始指针,并且不能递减函数值返回的指针。
当然,在检查列表是否足够长之后,C++11中这个问题的通用解决方案是std::prev(std::prev(mylist.end()))
。为此,您需要#include <iterator>
。
您可以使用std::advance和reverse_iterator:
SomeContainerType::reverse_iterator it = myList.rbegin();
std::advance(it, 1); // next to last element
即使有问题的迭代器类型不支持operator+
,这也能工作。
如果reverse_iterator
可以,则:some_list.rbegin() + 1;
相关文章:
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 打印无序映射的第二个元素,即集合
- c++:交换向量中所有元组的第一个和第二个元素
- 如何根据对的第二个元素对 STL c++ 中的一组对进行排序?
- 为什么我在对向量的第二个元素"push_back"中有C3867错误
- 如何打印第一个和最后一个元素的和,然后打印第二个和倒数第二个元素的总和,依此类推
- 如何获得相同数量的第一个和第二个元素以及它们在c++中各自的位置
- 使用索引与迭代器将向量迭代到倒数第二个元素
- C++ 比较容器中所有对的第一个和第二个元素
- 是否有可能通过溢出 C 中的第一个元素来写入数组第二个元素
- 如何仅根据第二个元素对map<int,pair<int,int> >进行排序?
- 如何通过STL设置迭代直到第二个元素
- 如何获取列表中的倒数第二个元素
- 如何在C 对向量的第二个元素上执行较低的操作
- 如何迭代双重链接列表的每个第二个元素(戒指)
- C++迭代到倒数第二个元素
- 迭代对向量并访问第一个和第二个元素
- 为什么在地图中打印第二个元素