boost :: phoenixライブラリを使用して、以下のベクトルをソートしようとしています。クラスFooにはメンバ関数 'int getvalue()'があります。目的は 'getvalue()'によって返された値を使ってベクトルをソートすることです。しかし何かが欠けている。 ':: secondはクラスまたは名前空間ではないため、コンパイラエラーが発生します'boost :: phoenix :: sort error
std::vector<std::pair<int, Foo> > fooVec;
boost::phoenix::sort (boost::phoenix::bind(&std::pair<int, Foo>::second::getvalue(), boost::phoenix::arg_names::arg1) (*fooVec.begin()), std::less<int>());
誰でもこの説明をしてください。この仕事をするために私は何が必要ですか?
ありがとうございました。
PS:私は関数オブジェクト/ラムダまたは類似のものを使用することができましたが、boost :: phoenixを試してみたかったのです。
私はあなたのベクトルを並べ替えるとは思わない。最初のパラメータはソートされる範囲でなければなりません。あなたがphoenix表現をそれから作り出すので、あなたのベクトルは変更されません。 – mkaes
あなたは私にそれを行う正しい方法を教えるのがとても親切でしょうか?ありがとう... – polapts
私はこの例ではどのように私がフェニックスを使用するかの例と答えを追加しました。しかし、私はstd :: lessをもう使用できないので、あなたのアプローチとは異なります。しかし、おそらくそれは役に立ちます。 – mkaes