スワップに関する3つの質問があります。スワップのパフォーマンスに関する質問
(1)は、2つの同じ型STLコンテナa
とb
に関しては、以下の両方の操作が
swap(a,b);
a.swap(b);
をうまくいく私はイテレータの数を含む、例えば、(第2のコンテナに特化であることを理解最初のものは一般的なデータ型を扱うグローバルなアルゴリズムであり、内部のコピー構造を実行します。
私の質問は、私が最初に書く場合は、コンパイラは関係なく、または適切な専門分野が存在するかどうかを確認するために注意する必要がありますか?
(2)swap(a,b)
はswap(b,a)
と同じパフォーマンスになりますか?コピー構成が関係していて、オブジェクトのサイズがかなり異なる場合は、問題があると思われますか?
(3)オーバーロードされたオペレータ==
が存在し、比較的高速である場合、スワップする前にa == b
をチェックすると、不必要な操作を避けることができます。 std::swap
がこのチェックを先に適用するか、またはそれに関係なく操作を実行しますか?
ありがとうございました!
これはすべてSTLの特定の実装に依存しませんか?私はあなたが標準からこれを引き出すことはできないと思います。 –
番号3は実装に依存する可能性があります。 1が明示的に必要です。 –
迅速な対応をありがとう、ありがとうございます。 – Chrys