Вопрос по default-value, c++, vector – Каково значение элемента в неинициализированном векторе?

0

Если я создам вектор какvector v(10); какое значение по умолчанию для каждого элемента?

Кроме того, что если это?vector v(10)

Ваш Ответ

3   ответа
0
vector<myclass> v;
</myclass>

что если у меня есть размер 10? derrdji
размер 0 .. но насколько я знаю, емкость не должна быть 0 .. Naveen
15

Конструкторstd::vector<> что вы используете, когда вы объявляете свой вектор как

vector<myclass> v(10);
</myclass>

на самом деле имеет более одного параметра. Он имеет три параметра: начальный размер (который вы указали как 10), начальное значение для новых элементов и значение распределителя.

explicit vector(size_type n, const T& value = T(),
                const Allocator& = Allocator());

Второй и третий параметры имеют аргументы по умолчанию, поэтому вы можете опустить их в своем объявлении.

Значением аргумента по умолчанию для нового элемента является значение по умолчанию, которое в вашем случаеMyClass(), Это значение будет скопировано во все 10 новых элементов с помощью их конструкторов копирования.

Что именноMyClass() значит зависит от вашего класса. Только ты это знаешь.

Постскриптум Стандартные реализации библиотеки разрешено использоватьперегрузка функции вместоаргументы по умолчанию при реализации вышеуказанного интерфейса. Если какая-то реализация решит использовать перегрузку функции, она может объявить конструктор только с одним параметром (размером) вstd::vector, Это не влияет на конечный результат: все элементы вектора должны начинать свою жизнь так, как если бы они были инициализированы значением.

1

vector v(10) создаст массив из 10myUnions инициализируется их конструктором по умолчанию. Однако обратите внимание, что: 1) Союзы могутне иметь членов с конструкторами, конструкторами копирования или деструкторами, так как компилятор победилt знать, какой элемент создать, скопировать или уничтожить, и 2) Как и в случае классов и структур, члены со встроенным типом, таким как int, будут инициализированы по умолчанию, то есть вообще не; их значения будут неопределенными.

Похожие вопросы