11

vectorlistおよび他のコンテナと同様)にはメンバー関数(MF)がありassignます。assignMF (範囲バージョン) と代入演算子を比較したい。

私が理解している限り、次の場合に使用すると便利ですassign

  1. ベクトルの部分範囲 (最初から最後までではなく) を割り当てたいとします。
  2. 割り当ては配列から行われます。

それ以外の場合は、MF に短所がなくassign、代入演算子を使用できます。私は正しいですか?assignMFを使用する他の理由はありますか?

4

1 に答える 1

15

使用する主な理由assignは、あるタイプのコンテナーから別のタイプのコンテナーにデータをコピーすることです。

たとえば、 の内容を に移行するstd::set<int>場合std::vector<int>、代入演算子は使用できませんが、 は使用できますvector.assign(set.begin(), set.end())

もう 1 つの例は、どちらかに変換可能な異なる型を保持する 2 つのコンテナーの内容をコピーすることです。に代入しようとするstd::vector<Derived*>std::vector<Base*>、代入演算子が不十分です。

于 2013-11-01T23:01:00.287 に答える