Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Стандартный векторный контейнер - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Кто-то работал или слышал о библиотеках jrtplib, emiplib? http://www.cyberforum.ru/cpp-beginners/thread937980.html
У меня работа со звуком. Дали мне две библиотеки jrtplib и emiplib, а я об таких даже не слышал. Ребят помогите???
C++ Определен в файле заголовка "Класс-контейнер vector определен в файле заголовка <vector> в пространстве имен std" Как это понять? http://www.cyberforum.ru/cpp-beginners/thread937978.html
Распараллелить с помощью критической секции C++
Здравствуйте форумчане! Дан массив от 1..n, который сортирует числа например: 1...4 2 1 3 3 вывод 1 2 3 3 Собственно программа сделана, остается теперь распараллелить с помощью критической...
неправильно отображает файл в HEX режиме C++
открываю файл. в файле записано "єЄєЄєЄєЄєЄєЄєЄє«" вывожу, получается File is opening for work! FFFFFFBA FFFFFFAA FFFFFFBA FFFFFFAA FFFFFFBA FFFFFFAA FFFFFFBA FFFFFFAA FFFFFFB A FFFFFFAA...
C++ Не могу скомпилировать? http://www.cyberforum.ru/cpp-beginners/thread937937.html
Не могу скомпилировать программу. Каждый раз такая беда(((
C++ как выглядят функции как выглядят функции (просмотр списка в обратном направлении, поиск заданного элемента в прямом направлении , добавление элемента перед заданного) подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
14.08.2013, 18:31
Erjay, у шаблона вектор много конструкторов и не обязательно требовать наличие конструктора по умолчанию. Тему проще понять на примере инициализации динамического массива.
Дело в том, что при выделении памяти под переменную одиночного значения, язык предоставляет возможность сразу его инициализировать необходимым значением:
C++
1
int *b = new int(123);//выделение и инициализация. Для динамических массивов это невозможно.
но нет возможности так поступить с массивом. Нельзя написать, что-то похожее на:
C++
1
int *c = new int[]({1, 2, 3});  //было бы удобно но ничего подобного нет)
Возможна, например запись:
C++
1
int *c = new int[3];
которая не в состоянии принять каких либо значений для инициализации, она только выделяет память. Для int например, эта память вообще не инициализируется и содержит мусор.
Зато если есть конструктор по умолчанию (от компилятора или определённый явно, неважно), то компилятор знает что ему делать видя запись:
C++
1
MyClass *d = new MyClass[3];
Оператор выделения памяти трижды вызовет конструктор по умолчанию.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru