[過去ログ] C++相談室 part165 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
72(2): デフォルトの名無しさん (ワッチョイ 9f1f-oseA) [sage] 2023/12/11(月) 15:17:51.77 ID:7vxydTfj0(1/2) AAS
ある構造体Aがあります
Aの比較関数が複数ありますcompA0,compA1,compA2,...
比較関数の関数ポインタがありますcompA
compA = &compA2;
別の構造体Bがあります
BはAを内包しています
struct B{ A a; ... };
この構造体Bを、Aの比較関数ポインタcompAで比較してソートするにはどう記述すればよいですか?
std::vector<B> bs;
bs.push_back(...);...
std::sort(bs.begin(),bs.end(),?);
できればラムダ式を使わずにできるとありがたいです
73: デフォルトの名無しさん (ブーイモ MM5b-oUR/) [sage] 2023/12/11(月) 15:22:02.06 ID:F1R6HyeLM(1) AAS
>>72
ラムダ式使った方が良いと思うけど本当にラムダ式なしが良い?
75(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9f3e-pD6R) [sage] 2023/12/11(月) 15:45:20.57 ID:wAhsIAfi0(1/2) AAS
>>72
もし C++20 を使えるなら (std::sort と違って) std::ranges::sort では比較関数とは別に
比較すべき要素を取り出す操作をプロジェクションとして与えることが出来るから
これ一発でいけてだいぶん楽できる。
std::ranges::sort(bs, compA, &B::a);
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.032s