инициализировать вектор нулями C ++ / C ++ 11

118

Я знаю, что в C ++ 11 добавлена ​​функция инициализации переменной нулем как таковой.

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

Есть ли аналогичный способ инициализировать std::vectora фиксированной длины всеми нулями?

pyCthon
источник
13
std::vector<int> vec(42);
avakar
9
кстати, это не
новость

Ответы:

221

Для этого вам не нужны списки инициализации:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);
ronag
источник
37
Вам не нужно явно указывать 0, не так ли? просто vector(length)должно работать?
Даниэль Гратцер
38
@jozefg: Да, это сработает, хотя нет ничего плохого в том, чтобы четко указать, что вы хотите от кода.
ronag
1
@ronag я написал свой ответ, потому что явное выражение в этом случае не обязательно является хорошим примером, если int - это не тот тип, с которым он работает. Общее программирование доступно на C ++, но когда мне напомнили, что аргумент можно вообще опустить, я удалил свой ответ.
Йоханнес Шауб - лит
1
Вектор автоматически инициализируется значением 0, если вы не укажете другое значение в объявлении, как показал ronag.
Nikos
Можно ли повторно инициализировать весь элемент Global Vector с помощью ZEROwith эффективно без использования циклов for ??????
Анкит Мишра
0

Инициализация вектора, имеющего структуру, класс или союз, может быть выполнена таким образом

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Декстера
источник