0

以下に例を示します。

std::set<std::string, SpecialCompareLess> setSpecial;

カスタマイズされた比較タイプで連想コンテナーを定義するとき、いくつかの潜在的な問題に注意を払う必要があることを覚えています。しかし、私は問題が何であるかを忘れています。

たとえば、連想コンテナーで STL アルゴリズムを使用する場合、アルゴリズムにデフォルトの比較子を選択させるのではなく、そのような特殊な比較子を提供する必要があります。そうしないと、正しい結果が得られません。

誰かが私が話していることを知っているなら、何が懸念されているかを思い出してもらえますか?

ありがとうございました

4

1 に答える 1

1

そのような問題はたくさんあり、それらの多くは要約するのが難しいため、そのような共通の参照先はありません. しかし、私自身の経験から、最も頻繁で便利なものをいくつか紹介できます。ただし、コンパイラは常にファンクターまたはラムダをインライン化してパフォーマンスを向上させるため、常にファンクターまたはラムダを使用します。2. コンパレーターのパラメーターを const 参照として宣言することを忘れないでください。3. コンパレーターの大きなコードをカプセル化するためのアダプターをいつでも作成できる場合 4. FP で純粋関数のようにコンパレーターを作成してみてください。5. コンテナーがポインターで構成されている場合は、独自のコンパレーターを作成する必要があります。これは、デフォルトのコンパレーターがポインター値を逆参照せずにソートするためです。6. 正しいコンパレータの戻り値の型を記述するために、等価と等価の数学的な違いを覚えておいてください (たとえば、等価の場合は false)。また、Musser、Meyers、Herb Sutter の本にも、そのようなアドバイスがいくつかあります。

于 2012-10-20T11:23:08.940 に答える