Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memulakan Vektor dengan Elegan dalam C?

Bagaimanakah Saya Boleh Memulakan Vektor dengan Elegan dalam C?

Barbara Streisand
Barbara Streisandasal
2024-12-21 11:33:14170semak imbas

How Can I Elegantly Initialize Vectors in C  ?

Memudahkan Permulaan Vektor: Pilihan Pengekodan Keras Elegan

Mencipta pemula tersuai untuk tatasusunan ialah amalan standard dan mudah. Walau bagaimanapun, apabila ia datang kepada vektor, mencari mekanisme yang serupa boleh menjadi sedikit lebih rumit. Persoalan yang wujud ialah sama ada wujud kaedah untuk memulakan vektor sebersih tatasusunan. Mari kita terokai penyelesaiannya.

Pendekatan standard, seperti yang anda nyatakan, melibatkan operasi push_back:

std::vector<int> ints;
ints.push_back(10);
ints.push_back(20);
ints.push_back(30);

Walaupun kaedah ini memenuhi tujuannya, ia tidak sepadan dengan keanggunan permulaan tatasusunan.

Pendakap C 11 Dilengkapi Permulaan

Dengan C 11 dan pengkompil yang serasi seperti GCC 4.4, anda boleh menerima inisialisasi tertutup pendakap untuk vektor:

std::vector<int> v = {1, 2, 3, 4};

Sintaks ini menyediakan cara ringkas dan eksplisit untuk memulakan vektor .

Tingkatkan.Tugaskan Perpustakaan

Alternatif lain ialah menggunakan perpustakaan Boost.Assign. Ia menawarkan pelbagai teknik untuk pemulaan vektor:

Menggunakan list_of:

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

Menggunakan = notasi:

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

Walau bagaimanapun, ambil perhatian bahawa Boost.Assign membawa beberapa overhed prestasi disebabkan oleh mekanisme asasnya. Untuk kod sensitif prestasi, pertimbangkan pendekatan push_back.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memulakan Vektor dengan Elegan dalam C?. 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