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

Mary-Kate Olsen
Lepaskan: 2024-10-24 03:08:02
asal
287 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!