2014-01-29 40 views
0

我在使用C++中的set :: iterator時遇到了一些問題。我有一組二維點,我需要迭代和比較這些點三個。等價迭代器

我的想法是使用三個循環遞增迭代器,逐個。但是C,當我試圖++給了我一個錯誤:

for (set<pair<double, double> >::iterator i = S.begin(); i != S.end(); i++){ 
    for (set<pair<double, double> >::iterator j = i+1; j != S.end(); j++){ 
     ... 
    } 
} 

編輯:錯誤是「錯誤:沒有對應於‘我+ 1’‘運營商+’」

回答

3

的std ::一套具有雙向迭代器。它沒有迭代器+整數等操作。因此,請改用

for (set<pair<double, double> >::iterator j = std::next(i); j != S.end(); j++){ 
+0

請注意'std :: next()'是一個C++ 11功能。但是如果你還沒有達到C++ 11的標準,你也可以從Boost中獲得它。 –

+0

非常感謝。這樣可行。 – Guilherme

+1

@FredLarson或自己編寫'next':'template I next(I in,D n = 1){std :: advance(in,n);返回;}' – Yakk