以下のコードを実行しようとしました。私が見つけたのは、出力に違いがあるということです。コンパレータ機能で使用される順序付けメカニズムに問題があることを理解しています。私が基本的に探しているのは次のとおりです。1)Setはどのようにデータを内部に保存しますか。2)この問題を解決するにはどうすればよいですか、またはデータを別のセットにコピーするための最良の方法です。3)注文がこの問題をどの程度正確に引き起こしているか。
#include <iostream>
#include <set>
using namespace std;
struct Comparator {
bool operator()( const int& a, const int& b ) {
if( a <= b )
return true;
else
return false;
}
};
int main()
{
set< int, Comparator > customSet;
for( unsigned k = 0, index = 2; k < 10; ++k ) {
customSet.insert( index );
}
set< int, Comparator >::iterator iter = customSet.begin();
for(; iter != customSet.end(); ++iter ) {
cout<<*iter<<endl;
}
cout<<"---------------------------------"<<endl;
set< int, Comparator > tempCustomSet ;//= customSet;
tempCustomSet.insert( customSet.begin(), customSet.end() );
iter = tempCustomSet.begin();
for(; iter != tempCustomSet.end(); ++iter ) {
cout<<*iter<<endl;
}
return 0;
}