に据え付ける動きます。メソッドemplace
はstd::pair
を構成し、std::map
に移動します(コピーは必要ありません)。しかし、int
のコピーは左辺値ですが、std::string
のコピーは右辺値にキャストされるため、どのコンストラクタがstd::pair
を構築するために呼び出されますか? 1つの引数は移動できないので、ここで追加のコピーが行われると思います。そうですか?明らかに、私もint
のコピーを右辺値にキャストすれば、私は追加のコピーがないと思います。地図は、私は私が正しく、このコードを理解すればわからない左辺値
1
A
答えて
4
このコンストラクタが呼び出されます。この場合x
とy
で
template< class U1, class U2 >
pair(U1&& x, U2&& y);
は右辺値参照が、普遍の参照ではありません。長い短編小説では、左辺値(この場合はint
)は左辺値参照と右辺値(この場合はstd::string
)から右辺値参照に崩れます(std::move()
)。
にインスタンスコンストラクタは次のようになります。
pair(int& x, std::string&& y);
スコット・マイヤーズがadd
が呼び出されるとhttps://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers
0
は、
std::string
とint
がコピーされている多くの良いことを説明しています。
int
がコピーされますが、最初にコピーするstd::string
はありません。その代わり、s
はあなたが渡していることを文字列リテラルから関数自体にその場で構成されている。
ので、私たちは、ミックスと一致させることができます
std::pair
を構築するために呼び出されるコンストラクタ。 std::pair
の転送参照のコンストラクタテンプレートがあります:
template< class U1, class U2 > pair(U1&& x, U2&& y); // since C++11, until C++14 template< class U1, class U2 > constexpr pair(U1&& x, U2&& y); // since C++14
したがって、この場合には、我々はpair<int&, std::string>
を呼んでいます。 「追加コピー」はありません。
関連する問題
- 1. このコードの理解は正しいですか?私は、私たちの請負業者の1からいくつかのコードを見直してい
- 2. は「」、私がしなければ、私は理解して「」
- 3. Mongoのデータベースは、私が働く以下のコードを持っている地図
- 4. 私のコードがうまくいかない理由を理解できない
- 5. コード:メッセージは、私はこれが動作しない理由を理解しようとしています
- 6. "代入の左辺オペランドとして必要な左辺値" - C++
- 7. 私のUIViewControllerが正しく解放されないのはなぜですか?
- 8. D3地図データラベルが正しく表示されない
- 9. jquery mobile gmap3地図が正しく描画されない
- 10. 地図ルートビューが正しく表示されない
- 11. 地域情報を正しく理解していますか?
- 12. もし(右辺値==左辺値)
- 13. 私はXSLTでのラインコードを持っていますが、私はそれのいくつかの部分を理解していない私のコード
- 14. 反復子が左辺値として逆参照されない理由
- 15. Herokuの、私のアプリがクラッシュした....私はこの問題を解決する方法がわからない
- 16. リストの代わりに地図でfoldLeftを理解する
- 17. 私はこの視覚的な基本的なプログラムを正しく理解していますか?
- 18. 左辺値の左辺値と右辺値へのバインドと戻り値
- 19. 私のコードがうまくいかない理由がわかりません
- 20. 私のコードがうまくいかない理由がわかりません
- 21. CollapsingToolbarLayoutでAndroidの地図が正しくスクロールしない
- 22. LazyInitializationExceptionは: - これは正常に動作が、私ならば
- 23. PHP - MySQLのクエリは、これは私のFlexコードで、私はPOSTを使用していない....</p> <p>を私は正しいつもりかどうかわからない、私は常に戻り値を取得しています
- 24. 私は良くないものを理解しない
- 25. 左辺値
- 26. 私はxmlファイルから地図上のマーカーを配置しようとしていますが、私のマップはここで任意のマーカーなし
- 27. これのためのカウンター、私はまだ理解しない
- 28. C++、式は修正可能な左辺値
- 29. TS3のSTATUS - 私は多くのPHPを理解していない原因私はどのように行うのか分からないが、私はこの事をしたい、私はHTMLでこのコードを持っているTDタグに
- 30. 私のCSSがうまくいかない理由がわからない
'std :: pair'は' int'をコピーし、 'std :: string'を右に動かすように構成されていますか? –
@MarcoAgnese correct – imreal