Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VC_Lect.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
15 Мб
Скачать
☆

20.5.1.Конструкторы

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

Все конструкторы запоминают объект-распределитель памяти (allocator) и инициализируют вектор.

Замечание. Ключевое слово explicit (явный) используется для обозначения того, что конструктор должен вызываться только явно. Другими словами, компилятор не должен использовать этот конструктор для неявного приведения типа. Поясним это на простом примере:

#include <vector>

…

vector <double> Vec(10);

vector <double> Vec2=20;

Если бы второй конструктор класса vector не был бы объявлен как explicit, то определение вектора Vec2 было бы допустимо и трактовалось бы как vector <double> Vec2=vector(20), что может восприниматься неоднозначно.

Параметры конструкторов:

Имя параметра

Описание

_Al

Класс распределитель памяти джля элементов вектора. Функция get_allocator() возвращает этот класс для объекта вектор

_Count

Число элементов создаваемого вектора

_Val

Значение элементов создаваемого вектора

_Right

Вектор оригинал, на основе которого создается данный вектор с помощью конструктора копирования

_First

Позиция первого элемента в диапазоне копируемых элементов вектора

_Last

Позиция элемента вектора, следующая за последней позицией диапазона

Смысл значений итераторов вроде First и Last может прояснить следующая схема для вектора, состоящего из трех элементов (рис. 1).

Рис. 1. Смысл итераторов First и Last

Замечание. Понятие итераторов и особенности их определения можно найти в работе «Пол__Объектно-ориентированное_программирование_на_С++.pdf» с. 252. Кроме того, они хорошо описаны у Страуструпа (разд. 3.8)

Конструкторы класса vector:

  1. vector(); Создание изначально пустого вектора

  2. explicit vector( const Allocator& _Al); Создание изначально пустого вектора и задание объекта-распределителя памяти

  3. explicit vector( size_type _Count); задает число элементов вектора _Count со значениями по умолчанию для типа элементов вектора.

  4. vector( size_type _Count, const Type& _Val); задает число элементов вектора _Count с заданными начальными значениями _Val.

  5. vector( size_type _Count, const Type& _Val, const Allocator& _Al); то же, что и предыдущий конструктор, плюс задание объекта-распределителя памяти

  6. vector(const vector<Type, Allocator>& _Right); создает вектор-копию вектора-оригинала

  7. template<class InputIterator>

vector(InputIterator _First,InputIterator _Last); создает вектор-копию на основе заданного диапазона элементов [_First, _Last) вектора-оригинала

  1. template<class InputIterator>

vector(InputIterator _First,InputIterator _Last,

  1. const Allocator& _Al); то же, что и предыдущий конструктор, плюс задание объекта-распределителя памяти

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]