[過去ログ] C++相談室 part165 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
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);
79
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9f3e-pD6R) [sage] 2023/12/11(月) 17:25:04.51 ID:wAhsIAfi0(2/2) AAS
その場で合成するのはさすがに見通しが悪すぎるので、
C++11 頃の C++ を仮定して私がやるならまずアダプタを作ると思う。
ちょっと雑ですまんがとりあえずこんな感じ。

class compB_adaptor {
private:
using comparator = std::function<bool(const A&, const A&)>;
comparator compA;

public:
compB_adaptor(comparator comp) : compA(comp) {}
bool operator()(const B& x, const B& y) {
return compA(x.a, y.a);
}
};

使うときには間にひとつ挟むだけで済む。

std::sort(bs.begin(), bs.end(), compB_adaptor(compA));
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.035s