如何通过C++ std :: set一个元素提前结束迭代?

amo*_*luc 4 c++ iterator loops set

C++

我有以下迭代循环:

for (it = container.begin(); it != container.end(); ++it) {
    //my code here
}
Run Code Online (Sandbox Code Playgroud)

我想尽早结束这个迭代1元素.我尝试了以下但它不编译:

for (it = container.begin(); it != container.end() - 1; ++it) { //subtract 1
    //my code here
}
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?谢谢.

jua*_*nza 8

您可以重复最多的人之前std::prev(s.end())这里s是你的设置,服用该容器是空的可能性护理:

#include <iterator> // for std::prev

auto first = s.begin();
auto last = s.empty() ? s.end() : std::prev(s.end()); // in case s is empty
for (auto it = first; it != last; ++it) { ... }
Run Code Online (Sandbox Code Playgroud)

注意:std::prev需要C++ 11支持.C++ 03替代方案是--s.end().