Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memulakan std::vektor dengan Elemen Khusus Tanpa Gelung?

Bagaimana untuk Memulakan std::vektor dengan Elemen Khusus Tanpa Gelung?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 03:08:02288semak imbas

How to Initialize a std::vector with Specific Elements Without Loops?

Cara Memulakan std::vector dengan Elemen Kod Keras Seperti Array

Memulakan std::vektor dengan senarai elemen berkod keras mungkin kelihatan seperti kerumitan berbanding dengan kesederhanaan memulakan tatasusunan. Pendekatan biasa melibatkan menolak elemen secara berulang ke vektor menggunakan push_back(). Tetapi adakah terdapat penyelesaian yang lebih elegan yang mencerminkan sintaks ringkas bagi permulaan tatasusunan?

Penyelesaian Elegan C 11

Jika pengkompil anda menyokong C 11, jawapannya adalah mantap ya. Anda boleh terus memulakan std::vector dengan senarai elemen yang disertakan dalam {}:

<code class="cpp">std::vector<int> v = {1, 2, 3, 4};</code>

Sintaks ini meniru permulaan tatasusunan dan menghapuskan keperluan untuk gelung atau push_back().

Alternatif untuk Penyusun Lama

Untuk penyusun yang tidak menyokong C 11, terdapat kaedah alternatif:

Boost.Assign Library:

Pustaka Boost.Assign menyediakan cara mudah untuk memulakan vektor menggunakan sintaks berikut:

<code class="cpp">#include <boost/assign/list_of.hpp>
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);</code>

Operator Overloading:

Anda boleh terlebih beban = pengendali untuk memulakan vektor:

<code class="cpp">#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
std::vector<int> v;
v += 1, 2, 3, 4;</code>

Perhatikan bahawa kaedah ini mempunyai beberapa overhed prestasi berbanding dengan permulaan langsung, menjadikannya kurang sesuai untuk kod kritikal prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan std::vektor dengan Elemen Khusus Tanpa Gelung?. 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