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,但它也不起作用。 (注意我知道循環中有一些語法錯誤)。請勿啓用庫函數。雙向迭代器Next
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,但它也不起作用。 (注意我知道循環中有一些語法錯誤)。請勿啓用庫函數。雙向迭代器Next
在C++ 03可以使用預先這樣說:
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可以使用未來代替:
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;
}
}
在第一個示例中,「++複製」看起來更簡單。 –
不工作接下來不會編譯...。我結束了在第二個循環中使用反向迭代器,並停止* other == *它 –
@GoBlue就像我說的,它需要C++ 11,所以你能解釋'你不會編譯'的意思嗎? – 2013-12-07 22:57:51
能否請你上你更清晰」重新嘗試實現以外的其他方式來編譯它? – 2013-12-07 21:34:42