假设我有一个容器的迭代器std::list::iterator it = mylist.begin()
,我叫std ::接下来检查我们是否已经在容器的末端?
iterator it2 = std::next(it,1);
是否std::next
检查,如果it == mylist.end()
?
假设我有一个容器的迭代器std::list::iterator it = mylist.begin()
,我叫std ::接下来检查我们是否已经在容器的末端?
iterator it2 = std::next(it,1);
是否std::next
检查,如果it == mylist.end()
?
不,程序在这种情况下被阻止。您应该检查自己:
if (it != mylist.end())
it2 = std::next(it,1);
你知道答案,那么为什么这个问题? –
@HariomSingh SO允许并鼓励[自己回答的问题](https://stackoverflow.com/help/self-answer)。 – Ron
@Ron虽然没有那么多,当问题已被问及和回答 –
你的意思是说它= mylist.end()。没有它不检查 –
行为是不确定的,如果递增或递减的指定序列将需要非递增的迭代器(例如过去末端迭代器)递增,或者不可递减的迭代器(例如前迭代器或单数迭代器)递减。 –