双向迭代器接下来

时间:2013-12-07 21:27:58

标签: c++ iterator set

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库函数。

1 个答案:

答案 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;
    }
}