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.