for(set<int> it = my_set.begin; it!= my_set.end; ++it)
for(set<int> other = next(it); other != my_set.end; ++other)
由于std :: next有关如何实现这样的循环的任何建议,这不会编译?我也尝试使用advance,但它也不起作用。 (注意我知道循环中存在一些语法错误)。请不要Boost库函数。
答案 0 :(得分:1)
在C ++ 03中,你可以这样使用advance:
for(std::set<int>::iterator it = my_set.begin(); it != my_set.end(); ++it) {
std::set<int>::iterator copy = it;
std::advance(copy, 1);
for(; copy != my_set.end(); ++copy) {
std::cout << *copy << std::endl;
}
}
在C ++ 11中,您可以使用next:
for(auto it = my_set.begin(); it != my_set.end(); ++it) {
for(auto other = std::next(it); other != my_set.end(); ++other) {
std::cout << *other << std::endl;
}
}