-4

標準ライブラリには、コピー構築不可能なオブジェクトの保存を許可するものがないというのは、気が遠くなるようなものです。一方、デフォルトの構築は賢明な操作です。何らかの理由で、デフォルトの答えは、オブジェクトの代わりにポインターを使用するようです。これは、追加の間接参照と参照カウント (unique_ptr もコピーできないため) によって無意味なオーバーヘッドを導入するだけであり、使用するのがやや厄介です。

そうは言っても、そのような代替手段は存在しますか?

4

1 に答える 1

3

C++11 の時点では、コンテナーのほとんど (すべてではないにしても) は、その要素がコピー可能である必要はありません。たとえば、ベクターは要素が移動可能であることのみを必要としますが、他のコンテナー (deque、*list、*map、set) にはコピー可能/移動可能な要素の要件はありません。要素をデフォルトで構築するか、 emplaceメソッドを使用して要素を作成する必要があります。もちろん、コピー/移動を必要とする操作を呼び出す場合、型はそれをサポートする必要がありますが、コンテナーに要素を格納するだけでは、要素がコピー可能である必要はありません。

于 2013-02-25T21:36:41.190 に答える