C 11 では、不必要なコピーを回避し、オブジェクト作成を最適化することでパフォーマンスを向上させるために、右辺値参照と移動セマンティクスが導入されました。これらの手法の違いを理解することは、効率的なコードを作成するために重要です。
次の C 11 コード例を考えてみましょう:
最初の例:
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return tmp; } std::vector<int> &&rval_ref = return_vector();
2 番目例:
std::vector<int>&& return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();
3 番目の例:
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();
最初の例:
2 番目の例:
Third例:
推奨される方法一時オブジェクトを移動専用の左辺値参照 (std::vector
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return tmp; } std::vector<int> rval_ref = return_vector();
このアプローチは、パフォーマンスと正確性の最適な組み合わせを提供します。
以上が右辺値参照と移動セマンティクスは C 11 の return ステートメントにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。