menginisialisasi vektor ke nol C ++ / C ++ 11

118

Saya tahu di C ++ 11 mereka menambahkan fitur untuk menginisialisasi variabel ke nol seperti itu

double number = {}; // number = 0
int data{};  // data = 0

Apakah ada cara yang sama untuk menginisialisasi a std::vectordari panjang tetap ke semua nol?

pyCthon
sumber
13
std::vector<int> vec(42);
avakar
9
btw, ini bukan hal baru di c ++ 11, Anda juga dapat melakukan ini di versi sebelumnya
balki

Jawaban:

220

Anda tidak memerlukan daftar inisialisasi untuk itu:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);
ronag
sumber
37
Anda tidak perlu menyatakan 0 secara eksplisit? hanya vector(length)harus bekerja?
Daniel Gratzer
38
@jozefg: Ya, ini akan berhasil, meskipun tidak ada salahnya menjelaskan secara eksplisit tentang apa yang Anda ingin kode lakukan.
ronag
1
@ronag saya menulis jawaban saya sendiri karena eksplisit dalam kasus ini belum tentu merupakan contoh yang baik jika int bukan tipe yang dia kerjakan. Pemrograman gereral tersedia dalam c ++ tetapi ketika saya diingatkan bahwa Anda dapat menghilangkan argumen sama sekali, saya menghapus jawaban saya.
Johannes Schaub - litb
1
Vektor diinisialisasi ke 0 secara otomatis, kecuali jika Anda menentukan nilai lain dalam deklarasi, seperti yang ditunjukkan ronag.
Nikos
Apakah mungkin untuk menginisialisasi ulang semua elemen Vektor Global ZEROdengan efisien tanpa menggunakan for loop ??????
Ankit Mishra
0

Menginisialisasi vektor yang memiliki struct, class atau Union dapat dilakukan dengan cara ini

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Dexter
sumber