等价迭代器 我面临着一些问题:C++中的迭代器。我有一组2-D点,我需要对这些点进行三对三的迭代和比较
我的想法是使用三个循环逐个递增迭代器。但是C++在我尝试时给了我一个错误:等价迭代器 我面临着一些问题:C++中的迭代器。我有一组2-D点,我需要对这些点进行三对三的迭代和比较,c++,iterator,set,C++,Iterator,Set,我的想法是使用三个循环逐个递增迭代器。但是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++){ ... } } for(set::iterat
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++){
...
}
}
for(set::iterator i=S.begin();i!=S.end();i++){
for(set::iterator j=i+1;j!=S.end();j++){
...
}
}
编辑:错误是“错误:与'i+1'中的'operator+'不匹配”std::set具有双向迭代器。它没有迭代器+整数这样的操作。所以改用
for (set<pair<double, double> >::iterator j = std::next( i ); j != S.end(); j++){
for(set::iterator j=std::next(i);j!=S.end();j++){
std::set有一个双向迭代器。它没有迭代器+整数这样的操作。所以改用
for (set<pair<double, double> >::iterator j = std::next( i ); j != S.end(); j++){
for(set::iterator j=std::next(i);j!=S.end();j++){
std::set有一个双向迭代器。它没有迭代器+整数这样的操作。所以改用
for (set<pair<double, double> >::iterator j = std::next( i ); j != S.end(); j++){
for(set::iterator j=std::next(i);j!=S.end();j++){
std::set有一个双向迭代器。它没有迭代器+整数这样的操作。所以改用
for (set<pair<double, double> >::iterator j = std::next( i ); j != S.end(); j++){
for(set::iterator j=std::next(i);j!=S.end();j++){
请注意std::next()
是C++11的一项功能。但是,如果您还没有达到C++11的要求,您也可以从Boost获得它。@Fredrarson或编写自己的next
:模板I next(I in,dn=1){std::advance(in,n);return in;}
请注意std::next()
是C++11的一项功能。但是如果你还没有达到C++11的标准,你也可以从Boost中获得它。@Fredrason或编写你自己的next
:模板I下一步(I in,D n=1){std::advance(in,n);return in;}
注意std::next()
是C++11的一项功能。但是如果你还没有达到C++11的标准,你也可以从Boost中获得它。@Fredrason或编写你自己的next
:模板I下一步(I in,D n=1){std::advance(in,n);return in;}
注意std::next()
是C++11的一项功能。但如果你还没有达到C++11的标准,你也可以从Boost中获得它。@Fredrason或编写你自己的下一步
:模板I下一步(输入,DN=1){std::advance(输入,n);返回;}