問題タブ [emplace]

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.

0 投票する
1 に答える
6019 参照

c++ - unique_ptrs のコンテナーで emplace_back を使用しても安全ですか?

次の点を考慮してください。

ベクトルで再割り当てが発生し、それが失敗した場合 ( をスローstd::bad_alloc)、私は「安全」ですか、それともリークしintますか?

C++11 23.3.6.5 [vector.modifiers]/1 言います:

コピー コンストラクター、ムーブ コンストラクター、代入演算子、ムーブ代入演算子以外によって、Tまたは任意のInputIterator操作によって例外がスローされた場合、影響はありません。

これは、これが潜在的な問題であることを示しているようです。つまり、「影響がない」場合、unique_ptr構築されたものはありません。そのため、そのポインタに依存するデストラクタの動作deleteは発生しません。(これは、s のemplace_backコンテナーに対して禁止する必要があることを示している可能性がありますunique_ptr)

0 投票する
1 に答える
3744 参照

c++ - PODの導入

重複の可能性:
C++11 emplace_back on vector<struct>?

POD で定置は可能ですか? Visual Studio 2012 では動作しないようです:

これは Visual Studio 2012 の単なる欠点ですか、それとも C++11 では単に POD を使用できないのでしょうか?

0 投票する
5 に答える
117265 参照

c++ - c++ マップでの挿入対 emplace 対 operator[]

初めてマップを使用していますが、要素を挿入する方法がたくさんあることに気付きました。emplace()operator[]またはに加えて、またはを使用するinsert()ようなバリアントを使用できます。それらすべてに関する多くの情報と特定のケースに関する質問がありますが、全体像を理解することはまだできません。だから、私の2つの質問は次のとおりです。value_typemake_pair

  1. それらのそれぞれが他のものよりも優れている点は何ですか?

  2. 標準に emplace を追加する必要はありましたか? それなしでは不可能だったことはありますか?

0 投票する
1 に答える
2420 参照

c++11 - emplace* を使用する場合と push/insert を使用する場合

私は、コンテナの emplace 関数の一般的な考え方を知っています(「新しい要素をその場で構築する」)。
私の質問は、それが何をするかではなく、Effective C++ 11 のようなものです。

いつ使用するかを決定するための適切なルールは何std::vectorですか ? emplace_back()push_back()

0 投票する
3 に答える
1050 参照

c++ - 戻り値を配置する方法はありますか?



バージョン 2は常にバージョン 1より高速です。

実際には、getRange()複数のクラスで使用されています。バージョン 2を適用すると、多くのコードの重複が発生します。

また、一部のクラスでは の代わりに を使用するため、rangesへの非 const 参照として渡すことはできません。複数のオーバーロードを作成し、コードの重複を増やす必要があります。getRange()std::stackstd::vector

戻り値を配置する一般的な方法/イディオムはありますか?

0 投票する
1 に答える
158 参照

boost - ベクターからコピーC++11 機能を使用して vectorに

0 投票する
1 に答える
223 参照

c++ - RVO、移動セマンティクスと最適なコードへの闘い

正しく理解できれば、移動セマンティクスにより、一時的な名前のないオブジェクトからリソースを移動して再利用できます。RVO では、先行するムーブ セマンティクスはさらに進んで、オブジェクト全体を「盗み」、余分なコンストラクターの呼び出しと代入/コピー機能を回避します。

呼び出されたコンストラクターが最終的な左辺値ターゲットのアドレスを直接使用して、ユーザーが必要とする場所にデータを直接配置する場合、これは私には少し直感的ではありませんか?

つまり、「このオブジェクトをこの場所に作成する」は、「このオブジェクトをどこかに作成してから、適切な場所にコピーする」よりも少し直感的に思えます。