为了获得列表中的下一个元素,只需要增加迭代器。但是从列表中的任何元素,有没有办法直接到列表的头部?例如,如果迭代器指向列表的第三个元素,除了向后迭代之外,有没有办法到达列表的前面?
由于
答案 0 :(得分:3)
不,因为std::list
用于建模双向链表(并且通常实现为一个),并且在双向链表中,每个元素只有指向列表中上一个和下一个元素的指针
答案 1 :(得分:0)
不,你甚至不能只基于一个迭代器来做:你无法知道迭代器是否有效,以及你是否可以增加或减少它!
你可以做到的唯一方法是将你的迭代器(假设有效)与x.begin()
和x.end()
进行比较,但是一旦你有了这些,你已经有了列表头的迭代器和问题变得毫无意义。
迭代器应该始终被认为是成对出现[first, last)
,容器提供了这样一对begin()/end()
成员函数。