Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
等价迭代器 我面临着一些问题:C++中的迭代器。我有一组2-D点,我需要对这些点进行三对三的迭代和比较_C++_Iterator_Set - Fatal编程技术网

等价迭代器 我面临着一些问题:C++中的迭代器。我有一组2-D点,我需要对这些点进行三对三的迭代和比较

等价迭代器 我面临着一些问题: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

我的想法是使用三个循环逐个递增迭代器。但是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::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);返回;}