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?


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);

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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.