从任何地方STL列表访问头部

时间:2012-03-24 18:48:45

标签: c++ list stl iterator

为了获得列表中的下一个元素,只需要增加迭代器。但是从列表中的任何元素,有没有办法直接到列表的头部?例如,如果迭代器指向列表的第三个元素,除了向后迭代之外,有没有办法到达列表的前面?

由于

2 个答案:

答案 0 :(得分:3)

不,因为std::list用于建模双向链表(并且通常实现为一个),并且在双向链表中,每个元素只有指向列表中上一个和下一个元素的指针

答案 1 :(得分:0)

不,你甚至不能只基于一个迭代器来做:你无法知道迭代器是否有效,以及你是否可以增加或减少它!

你可以做到的唯一方法是将你的迭代器(假设有效)与x.begin()x.end()进行比较,但是一旦你有了这些,你已经有了列表头的迭代器和问题变得毫无意义。

迭代器应该始终被认为是成对出现[first, last),容器提供了这样一对begin()/end()成员函数。