C++Builder相談室 Part18at TECHC++Builder相談室 Part18 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト812:809 08/06/07 06:48:02 三番目の引数が関数じゃないって怒られました \(^o^)/ 813:デフォルトの名無しさん 08/06/07 10:45:35 関数オブジェクト使えよ sortName(Asc) とか sortName(Desc) と書けるように 814:809 08/06/08 05:43:37 関数オブジェクトが理解できません\(^o^)/ ヤバス 815:デフォルトの名無しさん 08/06/08 11:51:43 STLよく知らんがこんなんでいいんじゃないん? struct CData { CData(std::string name, int value):Name(name), Value(value){}; std::string Name; int Value; }; struct CCompareTest { int mode; CCompareTest(int val) : mode(val) {} operator()(const CData& l, const CData& r) { if (mode == 0) { return (r.Value > l.Value) ? true : false; } else { return (r.Value < l.Value ) ? true : false; } } }; main() { std::vector<CData> test; test.push_back(CData("Item1", 0)); test.push_back(CData("Item2", 4)); test.push_back(CData("Item3", 2)); test.push_back(CData("Item4", 3)); test.push_back(CData("Item5", 0)); std::sort(test.begin(), test.end(), CCompareTest(1)); for(std::vector<CData>::iterator it = test.begin(); it < test.end(); it++) { std::cout << (*it).Name << ":" << (*it).Value << endl; } } Name基準でしかソートしないならoperator >(const FI&, const FI&)とoperator <(const FI&, const FI&)定義して std::greaterとstd::less使えば事足りるだろうけど。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch