問題タブ [noncopyable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++11 - std::unordered_map < K、boost::ptr_deque < T > > の operator[] (K const &) と emplace の違い
上記の例では、コメント アウトされた行は、コピーできない の要素をコピーしようとするため、コンパイルされませんptr_deque
。ただし、push_back
フォームは機能します。
私はそれoperator [] (K const &)
が単にreturn emplace(k, mapped_type()).first->second
orであると考えていましたがreturn insert(value_type(k, mapped_type())).first->second
、これは本質的にコメントアウトされたステートメントです
どうやらそうではないようです。内部で魔法operator []
を実行しますか?placement new
それとも何か特別なことがありptr_deque
ますか?
私はgcc-6.1とブースト1.59を使用しています
c++ - コピー不可、移動不可の要素型を持つ C++ コンテナー
コピーも移動もできない要素のコンテナが必要です。これらの要素はデフォルトで構築可能ではありませんが、それらのコンストラクタは同一の引数を取得します。
コンテナーのサイズは、その存続期間中は変更されません。組み込みの配列と同じくらい単純である必要がありますが、そのサイズはコンストラクターが呼び出される実行時に決定されます。
を使用することによって発生するメモリ割り当てと間接化のオーバーヘッドなしでそれを実装する簡単な方法はありstd::vector<std::unique_ptr<T>>
ますか?
c++ - クラスをコピー不可にする: 未定義のプライベート メソッドと削除されたメソッド
C++11 より前は、次のようなコードを見ました。
C++11 (およびそれ以降) の場合、次のようなコードが表示されます。
それらは同じように動作しますか? そうでない場合は、説明してください。
参考:https ://ariya.io/2015/01/c-class-and-preventing-object-copy