2017-08-17 44 views
2

假设我有一个容器的迭代器std::list::iterator it = mylist.begin(),我叫std ::接下来检查我们是否已经在容器的末端?

iterator it2 = std::next(it,1); 

是否std::next检查,如果it == mylist.end()

+0

你的意思是说它= mylist.end()。没有它不检查 –

+0

行为是不确定的,如果递增或递减的指定序列将需要非递增的迭代器(例如过去末端迭代器)递增,或者不可递减的迭代器(例如前迭代器或单数迭代器)递减。 –

回答

1

不,程序在这种情况下被阻止。您应该检查自己:

if (it != mylist.end()) 
    it2 = std::next(it,1); 
+0

你知道答案,那么为什么这个问题? –

+0

@HariomSingh SO允许并鼓励[自己回答的问题](https://stackoverflow.com/help/self-answer)。 – Ron

+0

@Ron虽然没有那么多,当问题已被问及和回答 –