1

私はリストを持っています

std::list<Selector> _selectorList;

私は何かを解析し、スマートポインターと、スマートポインターに関連付けられた優先順位を取得します。以下に示すように、これら2つのパラメーターを保持する構造を実装しました。

struct Selector
{
    int priority;
    SmartPointer *selector;
}

実行される解析はn個あり、その結果、n個の構造体インスタンスがリストにプッシュバックされます。最後に、構造内の優先度変数の降順に従ってリストをソートすることになっています。現在、これを行う予定です。

_selectorList.sort();

解析によって返されたスマートポインターを格納するためにリスト(他には何も使用しない)を使用する必要がある場合、これよりも優れたアプローチはありますか?

4

1 に答える 1

3

larsman が言ったように、SmartPointer へのポインターを使用するのはおそらく間違っています。スマート ポインターはメモリ リークを回避するために使用されるため、参照カウンターはオブジェクトのコピーまたは割り当て時に更新されるため、SmartPointer * はおそらく役に立たないでしょう。

より良いアプローチについては、独自の並べ替え操作を再実装する代わりに、std::list::sort を再利用できます。リストをソートできるようにするために、セレクターに比較演算子を実装させるだけです。こちらをご覧ください。

于 2012-06-11T09:33:50.263 に答える