-1
リストコンテナのソート機能を試して、関数オブジェクトと関数ポインタを比較関数として渡しています。 しかし、どういうわけか、関数オブジェクトのバージョンがうまくいかなかった。 l.sort(MylessFuncObj())
の出力は次のとおりです。リストコンテナのソート機能が機能しないのはなぜですか
1
2
3
5
45
私は出力が1 2 3 45 5.私はかなり理解していない他の事はl.sort()
前にそれを使用した場合l.sort(MylessFuncObj())
がうまく動作なかったことであることが期待けれども。私は、CPPを学び始め
、私は本当にこだわっています。..
#include <list>
#include <iostream>
using namespace std;
class MylessFuncObj
{
public:
bool operator()(const int &a, const int &b){
return (a%10)<(b%10);
}
};
bool Mylessfunc(const int &a, const int &b){
return (a%10)<(b%10);
}
int main()
{
list<int> l={1, 2, 3, 45,5};
l.sort(Mylessfunc);
for(int j:l) cout<<j<<endl;
l.sort();
cout<<endl;
for(int j:l) cout<<j<<endl;
cout<<endl;
l.sort(MylessFuncObj());
for(int j:l)
cout<<j<<endl;
return 0;
}
整数は辞書編集的にソートされていません......それらは値によってソートされています.......実際のところこのように数量を並べ替えていますか? –
同じリストを複数回ソートするのではなく、同じ値のセットで初期化されたリストの別のインスタンスで試しましたか? – PermanentGuest
ソート機能に応じて正しくソートされています。なぜあなたは45が5の前に来なければならないと思いますか? – interjay