zainicjuj wektor zerami C ++ / C ++ 11


118

Wiem, że w C ++ 11 dodali funkcję inicjowania zmiennej do zera jako takiej

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

Czy istnieje podobny sposób inicjalizacji a std::vectoro stałej długości do wszystkich zer?


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

9
btw, to nie jest nowe w c ++ 11, możesz to zrobić również w poprzednich wersjach
balki

Odpowiedzi:


221

Nie potrzebujesz do tego list inicjalizacyjnych:

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

37
Nie musisz jawnie podawać 0, prawda? po prostu vector(length)powinien działać?
Daniel Gratzer

38
@jozefg: Tak, to zadziała, chociaż nie ma nic złego w wyrażeniu tego, co ma robić kod.
ronag

1
@ronag Napisałem własną odpowiedź, ponieważ wyraźne wyrażanie się w tym przypadku niekoniecznie jest dobrym przykładem, jeśli typ int nie jest typem, z którym pracuje. programowanie gereral jest dostępne w języku c ++, ale kiedy przypomniano mi, że można całkowicie pominąć argument, usunąłem odpowiedź.
Johannes Schaub - litb

1
Wektor jest inicjalizowany automatycznie na 0, chyba że w deklaracji określisz inną wartość, jak pokazał ronag.
Nikos

Czy jest możliwa ponowna inicjalizacja elementu Global Vector za ZEROpomocą wydajnej metody bez używania pętli for ??????
Ankit Mishra

0

W ten sposób można zainicjować wektor mający strukturę, klasę lub Union

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.