bir vektörü sıfır olarak başlat C ++ / C ++ 11


118

C ++ 11'de bir değişkeni sıfıra başlatma özelliğini eklediklerini biliyorum.

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

std::vectorSabit uzunluktaki a'yı tüm sıfırlara eşitlemenin benzer bir yolu var mı?


13
std::vector<int> vec(42);
avakar

9
btw, bu c ++ 11'de yeni değil, bunu önceki sürümlerde de yapabilirsiniz
balki

Yanıtlar:


221

Bunun için başlatma listelerine ihtiyacınız yok:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);

37
Açıkça 0'ı belirtmenize gerek yok değil mi? sadece vector(length)çalışmalı mı?
Daniel Gratzer

38
@jozefg: Evet, işe yarayacak, ancak kodun ne yapmasını istediğiniz konusunda açık olmanın bir zararı yok.
ronag

1
@ronag kendi cevabımı yazdım çünkü bu durumda açık olmak, int birlikte çalıştığı tip değilse iyi bir örnek olmak zorunda değil. gereral programlama c ++ 'da mevcuttur, ancak argümanı tamamen atlayabileceğiniz hatırlatıldığında cevabımı kaldırdım.
Johannes Schaub - LITB

1
Bildirimde ronag'ın gösterdiği gibi başka bir değer belirtmediğiniz sürece, bir vektör otomatik olarak 0 olarak başlatılır.
Nikos

ZERODöngüler kullanmadan Global Vector'ün tüm elemanlarını verimli bir şekilde yeniden başlatmak mümkün mü ??????
Ankit Mishra

0

Yapı, sınıf veya Birliğe sahip bir vektörü başlatmak bu şekilde yapılabilir.

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.