#include <list>
using std::list;
int main()
{
list <int> n;
n.push_back(1);
n.push_back(2);
n.push_back(3);
list <int>::iterator iter = n.begin();
std::advance(iter, n.size() - 1); //iter is set to last element
}
有没有其他方法可以把iter指向list中的最后一个元素?
8条答案
按热度按时间1rhkuytd1#
是的,你可以从最后往回走一步(假设你“知道”这个列表不是空的)。
aiqt4smr2#
执行以下任一操作都会将
std::list<int>::iterator
返回到list
中的最后一项:以下代码将
std::list<int>::reverse_iterator
返回到list
中的最后一项:dced5bon3#
使用反向迭代器:
作为旁注:这个或CharlesBailey方法具有恒定复杂度,而
std::advance(iter, n.size() - 1);
具有列表的线性复杂度[因为它具有双向迭代器]。vwkv1x7d4#
以
end()
为例,向后一步。5lwkijsr5#
mjqavswn6#
您可以编写自己的函数,从给定的迭代器获得前一个(和下一个)迭代器(当我需要对
std::list
进行"向后看"和"向前看"时,我使用了这个函数):然后:
顺便说一句,这也可能在Boost库中可用(Next和Previous)。
khbbv19g7#
lf5gs5x28#
或者你可以使用
back()
来指向最后一个元素:n.back()
.