Rumah >pembangunan bahagian belakang >C++ >`push_back` lwn. `emplace_back`: Bilakah Anda Harus Menggunakan Yang Mana?

`push_back` lwn. `emplace_back`: Bilakah Anda Harus Menggunakan Yang Mana?

Susan Sarandon
Susan Sarandonasal
2024-12-29 17:22:10202semak imbas

`push_back` vs. `emplace_back`: When Should You Use Which?

push_back vs emplace_back

Dalam memahami perbezaan antara push_back dan emplace_back, adalah penting untuk memahami perbezaan antara pelbagai beban lebihan untuk push_back.

tolak_belakang Lebihan

push_back menawarkan tiga lebihan yang mengendalikan jenis data dan rujukan yang berbeza:

  • push_back(Const Type& _Val): Menerima salinan jenis data yang disediakan.
  • push_back(Jenis& _Val): Mengendalikan rujukan kepada data sebenar type.
  • push_back(Type&& _Val): Menerima rujukan rnilai kepada jenis data.

emplace_back Overload dalam MSVC10

Dalam Microsoft Visual C 10 (MSVC10), emplace_back mempunyai tambahan lebihan beban:

  • emplace_back(Jenis&&& _Val): Lebihan beban ini pada asasnya berlebihan dan tidak mempunyai fungsi unik berbanding dengan push_back(Jenis&& _Val) lebihan.

C 0x's emplace_back Lebihan Beban

Takrifan C 0x tulen bagi emplace_back berbeza dengan ketara:

  • emplace_back(Args&&&...): Lebihan beban ini membolehkan bekas membina objek secara langsung dalam dirinya menggunakan senarai hujah yang pelbagai.

Kelebihan emplace_back dalam C 0x

Versi C 0x emplace_back menawarkan beberapa kelebihan:

  • Pembinaan Objek Langsung: Ia membina objek secara langsung dalam bekas tanpa mencipta objek sementara terlebih dahulu.
  • Lebih pantas Prestasi: Kaedah ini memintas salinan dan pergerakan yang berpotensi, yang amat bermanfaat dalam senario kompleks di mana push_back mungkin memperkenalkan salinan atau pergerakan yang tidak perlu.

Kesimpulan

Dalam C , emplace_back ialah tambahan yang berkuasa kepada fungsi push_back yang membolehkan pembinaan objek yang mudah dalam bekas menggunakan senarai pelbagai hujah. Walaupun MSVC10 menawarkan pelaksanaan emplace_back yang tidak mematuhi, pelaksanaan C 0x yang tulen memberikan faedah prestasi yang ketara dan membolehkan pembinaan objek yang lebih cekap dalam bekas.

Atas ialah kandungan terperinci `push_back` lwn. `emplace_back`: Bilakah Anda Harus Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn