Что такое вектор в программировании какой массив

Контейнер vector в C++

Содержание

Особенности

Рекомендации

Разработчики языка C++ рекомендуют в использовать именно vector вместо ручного выделения памяти для обычного массива. Это позволяет избежать утечек памяти и облегчает работу программисту.

В C и C++ имеются некоторые серьёзные неудобства при работе с обычными массивами, поэтому при работе с C++ чаще всего используют именно массивы типа vector как базовые.

Заголовочные файлы

Для работы со стандартными для C++ векторами надо обязательно подключить заголовочный файл «vector» (без Си суффикса/расширения «.h», т.к. это заголовочный файл сугубо C++, т.е. пишется просто ):

Примеры

Декларация и инициализация

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

Пустой именованный вектор. Вектор с неопределенным размером из элементов типа float :

или с явным вызовом конструктора без параметров:

Пустые и непустые безымянные вектора

Пустой безымянный вектор:

Непустой/заполненный безымянный вектор:

Создание и задание вектора

Вектор типа int из заданных элементов:

Инициализация вектора подобно массивам:

Указание размера и авто-заполнение

В заголовочн. файле:

В заголовочн. файле:

Автоматическое создание и заполнение из других векторов и массивов

Инициализация вектора из массива. Результирующий вектор будет аналогом массива, т.е. будет такой же длинны/размера и содержать все элементы массива в том же порядке:

Инициализация вектора из другого вектора:

Инициализация всех элементов определенным значением с помощью функции заливки std::fill (необходимо подключение хедера «algorithm»):

Копирование вектора. Создание одного вектора на основе другого. Создание вектора и заполнение его другим, т.е. элементами др. вектора:

Динамически создаваемый находящийся в управляемой куче вектор

Создание указателя на динамически создаваемый находящийся в управляемой куче вектор:

Динамическое создание в управляемой куче пустого вектора и указателя на него:

Декларация и дефинация

Дефинация

Задать 3 элемента, каждый имеет значение 5:

Добавление

Управление элементами вектора

Добавление/вставка нового элемента в конец вектора с помощью метода push_back :

Вставка нового элемента в начало (остальные элементы сдвигаются):

Удаление элемента из начала (остальные элементы сдвигаются):

Перебор элементов вектора

Стандартный перебор элементов вектора с помощью цикла for :

Перебор элементов вектора с помощью цикла foreach :

Перебор элементов вектора с помощью итератора:

Стандартный перебор элементов динамически создаваемого находящегося в управляемой куче вектора через указатель на него с помощью цикла for :

Разное поведение uniform-инициализации

Стейтмент Что будет, если это написано в(о)
описании сост. типа дан. (класса/структуры) всём остальном
std::vector num<7>; Создаст 7 пустых ячеек, т.е. со знач. по-умолчанию для типа (для int это 0 ). Создаст 1 ячейку со знач. 7, т.е. просто добавит 7 в массив.
std::vector num<7, 5>; Создаст 7 ячеек со значением 5. Создаст 2 ячейки со знач. 7 и 5, т.е. просто добавит 7 и 5 в массив.
std::vector num<7, 5, 9>; Выдаст ошибку о том, что к классе-шаблоне vector нет функции, принимающей столько аргументов. Создаст 3 ячейки со знач. 7, 5 и 9, т.е. просто добавит 7, 5 и 9 в массив.

Такое поведение имеет место быть, по крайней мере, в стандарте C++11 в IDE Visual Studio 2013.

Операторы

Операторы класса vector :

Методы

Методы класса vector :

Отличия от массивов

Несмотря на то, что вектора полностью покрывают функционал массивов, всё же у массивов есть некоторые существенные отличия, что могут быть расценены как их достоинства перед векторами.

Указание размеров в заголовочных файлах

Примеры

Для массива можно задать размер при декларации в заголовоч. файле:

Для вектора так сделать нельзя:

В этом случ., напр., в IDE Visual Studio IntelliSense будет подчёркивать красным число, что указывает размер вектора, и говорить, что тут требуется спецификатор типа.

С помощью uniform-инициализации можно задавать размер векторов при декларации их в заголовочн. файлах:

Источник

В чем разница между вектором и массивом в C++?

В C ++ существует много различий между вектором и массивом. Однако главное сходство очень важно. Основное сходство заключается в том, что оба они представляют собой список, и каждый из них может содержать последовательность данных одного и того же типа. Основные отличия заключаются в следующем: размер (длина) вектора может быть увеличен естественным образом, но размер массива является фиксированным и не может быть увеличен. Элементы могут быть вставлены в вектор, но не могут быть вставлены в массив. Элементы могут быть добавлены в конце вектора, но не могут быть добавлены в конце массива. Вектор — это класс, из которого создаются экземпляры других векторных объектов, но массив является постоянным указателем на последовательность данных того же типа. У вектора есть методы (функции-члены), но у массива их нет, поэтому вектор называется структурой данных. Хотя указатель можно использовать с массивом, итераторы используются с вектором. Итератор — это разработанный указатель.

Перед массивом нельзя включать ни один элемент. В C ++ 17 и выше элемент может быть включен перед вектором с помощью функции-члена emplace ().

В оставшейся части этой статьи проиллюстрированы различия между вектором и массивом. Для каждой точки упоминается недееспособность массива или дается его грубый или громоздкий способ достижения той же цели.

Создание вектора или массива

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

Соответственно, массив будет создан следующим образом:

Обратите внимание на разницу в операндах слева от оператора присваивания. Затем количество элементов вектора может быть добавлено или уменьшено, но размер массива остается фиксированным, в данном случае 5.

Чтобы иметь и использовать вектор в программе, программа должна начинаться с:

using namespace std ;

Чтобы иметь и использовать массив в программе, директива препроцессора не требуется.

Увеличение размера

В следующем коде показано, как вектор из изначально двух элементов увеличивается до четырех элементов с помощью его функции-члена push_back ():

Этот код должен быть в теле функции. Для массива, поскольку массив имеет фиксированный размер, создайте массив для максимального количества предусмотренных элементов перед добавлением элементов с помощью оператора []. Пример:

Кроме того, этот код должен находиться внутри тела функции.

Inserting

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

for ( int i = ; i vtr. size ( ) ; i ++ ) <
cout vtr [ i ] ‘ ‘ ;
>

Первый оператор кода создает векторный объект. Буква C, которая должна была стоять перед буквой D в алфавитном порядке, здесь отсутствует. Вторая инструкция возвращает итератор, указывающий на первый элемент вектора. Следующие два оператора увеличивают указатель до точки «D». Утверждение после присваивает букву «C» гл. В этом сегменте кода последний оператор вставляет букву «C» перед буквой «D» с помощью итератора.

Что касается массива, то нет возможности вставить элемент. Из-за подобных ограничений для массива были разработаны векторные и другие контейнеры.

Примечание. Функцию-член insert () также можно использовать для вставки элемента перед вектором.

Appending

Добавление означает добавление элементов сзади. Функцию-член push_back () можно использовать для добавления элементов в конец вектора — см. Выше. Массив нельзя добавить. Единственный способ обойти эту проблему для массива — создать массив максимально предусмотренного размера. Вставляйте элементы с самого начала. Тогда в массиве останется некоторое пространство (ячейки). Затем, если есть необходимость добавить элементы сзади, поместите элементы (значения) в пустые пространства позади (со значениями по умолчанию).

Стирание элемента

Для вектора элемент можно стереть с помощью итератора. Затем итератор укажет на следующий элемент, который был там до того, как произошло стирание. Следующий код удаляет букву B:

for ( int i = ; i vtr. size ( ) ; i ++ ) <
cout vtr [ i ] ‘ ‘ ;
>
cout endl ;
cout * q endl ;

Ни один элемент массива нельзя стереть, но его можно изменить.

Clear

Все элементы вектора могут быть удалены с помощью его функции-члена clear () следующим образом:

Источник

Векторы в C++: для начинающих

Всем привет! До этого дня мы использовали чистые массивы. Чистые — это значит простые массивы, не имеющие у себя в багаже различных функций. В этом уроке мы пройдем нечистые массивы — векторы.

Быстрый переход по статье:

Что такое вектор (vector)

Вектор — это структура данных, которая уже является моделью динамического массива.

Давайте вспомним о том, что для создания динамического массива (вручную) нам нужно пользоваться конструктором new и вдобавок указателями. Но в случае с векторами всего этого делать не нужно.
Вообще, по стандарту пользоваться динамическим массивом через конструктор new — не есть правильно. Так как в компьютере могут происходить различные утечки памяти.

Как создать вектор (vector) в C++

Кстати, сейчас и в будущем мы будем использовать именно шаблон вектора. Например, очередь или стек, не созданные с помощью массива или вектора, тоже являются шаблонными.

Далее, чтобы объявить вектор, нужно пользоваться конструкцией ниже:

В примере выше мы создали вектор строк.

Кстати, заполнить вектор можно еще при инициализации (другие способы мы пройдем позже — в методах вектора). Делается это также просто, как и в массивах. Вот так:

После имени вектора ставим знак равенства и скобки, в которых через пробел указываем значение элементов.

Такой способ инициализации можно использовать только в C++!

Второй способ обратиться к ячейке

Но в C++ есть еще один способ это сделать благодаря функции — at(). В скобках мы должны указать индекс той ячейки, к которой нужно обратиться.

Вот как она работает на практике:

Давайте запустим эту программу:

Как указать количество ячеек для вектора

Указывать размер вектора можно по-разному. Можно это сделать еще при его инициализации, а можно хоть в самом конце программы. Вот, например, способ указать длину вектора на старте:

Так в круглых скобках () после имени вектора указываем первоначальную длину. А вот второй способ:

Вы можете задать логичный вопрос:»А в чем разница?». Давайте создадим два вектора и по-разному укажем их количество ячеек.

Как видим, в первом случае мы вывели три нуля, а во втором: 17, 0, 0.

Все потому, что при использовании первого способа все ячейки автоматически заполнились нулями.

При объявлении чего-либо (массива, вектора, переменной и т.д) мы выделяем определенное количество ячеек памяти, в которых уже хранится ненужный для ПК мусор. В нашем случае этим мусором являются числа.

Поэтому, когда мы вывели второй вектор, в нем уже находились какие-то рандомные числа — 17, 0, 0. Обычно они намного больше. Можете кстати попробовать создать переменную и вывести ее значение.

Нужно помнить! При использовании второго способа есть некоторый плюс — по времени. Так как для первого способа компилятор тратит время, чтобы заполнить все ячейки нулями.

Как сравнить два вектора

Если в середине программы нам понадобиться сравнить два массива, мы, конечно, используем цикл for и поочередно проверим все элементы.

Вектор снова на шаг впереди! Чтобы нам сравнить два вектора, потребуется применить всего лишь оператор ветвления if.

Источник

Класс vector

Класс вектора стандартной библиотеки C++ является шаблоном класса для контейнеров последовательности. Вектор хранит элементы заданного типа в линейном упорядочении и обеспечивает быстрый произвольный доступ к любому элементу. Вектор является предпочтительным контейнером для последовательности, когда производительность произвольного доступа имеет уровень «Премиум».

Синтаксис

Параметры

Type
Тип данных элементов, сохраняемых в векторе.

Комментарии

Для векторов время выполнения вставок и удалений элементов в конце последовательности является постоянной величиной. Время вставки и удаления элементов в середине вектора меняется линейно. Контейнер класса выполняется быстрее при вставке и удалении в начале и в конце последовательности. Контейнер класса выполняется быстрее при вставке и удалении в любом месте в последовательности.

Расширение вектора происходит, когда функции-члену требуется увеличить последовательность в объекте вектора сверх его текущей емкости. Другие операции вставки и стирания могут изменять различные адреса хранения внутри последовательности. Во всех таких случаях итераторы или ссылки, указывающие на изменившиеся части последовательности, становятся недействительными. Если расширения не происходит, действительными остаются только итераторы и ссылки перед точкой вставки или удаления.

Ссылочный класс — это вложенный класс, объекты которого могут предоставлять ссылки на элементы (одиночные биты) внутри vector объекта.

Члены

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

Определения типов

Имя Описание
[allocator_type] (#allocator_type) Тип, представляющий класс allocator для объекта вектора.
const_iterator Тип, предоставляющий итератор произвольного доступа, который может читать элемент const в векторе.
const_pointer Тип, предоставляющий указатель на элемент const в векторе.
const_reference Тип, предоставляющий ссылку на const элемент, хранящийся в векторе. Он используется для чтения и выполнения const операций.
const_reverse_iterator Тип, предоставляющий итератор произвольного доступа, который может читать любой элемент const в векторе.
difference_type Тип, представляющий различие между адресами двух элементов в векторе.
iterator Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в векторе.
pointer Тип, предоставляющий указатель на элемент в векторе.
reference Тип, предоставляющий ссылку на элемент, хранящийся в векторе.
reverse_iterator Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в обратном векторе.
size_type Тип, считающий количество элементов в векторе.
value_type Тип, представляющий тип данных, хранящихся в векторе.

Функции

Операторы

Имя Описание
operator[] Возвращает ссылку на элемент вектора в указанной позиции.
operator= Заменяет элементы вектора копией другого вектора.

allocator_type

Тип, представляющий класс распределителя для объекта вектора.

Комментарии

Пример

Пример использования см. в разделе get_allocator.

assign

Удаляет вектор и копирует указанные элементы в пустой вектор.

Параметры

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

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

count
Количество копий элемента, вставляемых в вектор.

value
Значение элемента, вставляемого в вектор.

init_list
Объект initializer_list, содержащий вставляемые элементы.

Комментарии

assign Во-первых, удаляет все существующие элементы в векторе. Затем assign либо Вставляет указанный диапазон элементов из исходного вектора в вектор, либо вставляет копии нового указанного элемента value в вектор.

Пример

Возвращает ссылку на элемент в заданном положении в векторе.

Параметры

position
Номер нижнего индекса или позиции элемента, на который включается ссылка в векторе.

Возвращаемое значение

Ссылка на элемент, индекс которого указан в аргументе. Если position значение больше размера вектора, at вызывает исключение.

Комментарии

Пример

Возвращает ссылку на последний элемент вектора.

Возвращаемое значение

Последний элемент вектора. Если вектор пуст, возвращаемое значение не определено.

Комментарии

При компиляции с помощью, _ITERATOR_DEBUG_LEVEL заданного как 1 или 2, возникает ошибка времени выполнения при попытке получить доступ к элементу в пустом векторе. Дополнительные сведения см. в разделе проверенные итераторы.

Пример

begin

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

Возвращаемое значение

Комментарии

Пример

capacity

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

Возвращаемое значение

Текущая длина хранилища, выделенного вектору.

Комментарии

Функция-член resize будет более эффективной, если выделить достаточно памяти для ее размещения. Используйте функцию члена, reserve чтобы указать объем выделенной памяти.

Пример

cbegin

Возвращаемое значение

Комментарии

С возвращаемым значением cbegin элементы в диапазоне нельзя изменять.

Возвращает const итератор после конца, указывающий на элемент, следующий за последним элементом вектора.

Возвращаемое значение

Комментарии

cend используется для проверки того, прошел ли итератор конец диапазона.

Значение, возвращаемое, cend не должно быть разыменовано. Используйте его только для сравнения.

clear

Очищает элементы вектора.

Пример

const_iterator

Тип, предоставляющий итератор произвольного доступа, который может читать элемент const в векторе.

Комментарии

Тип const_iterator нельзя использовать для изменения значения элемента.

Пример

const_pointer

Тип, предоставляющий указатель на элемент const в векторе.

Комментарии

Тип const_pointer нельзя использовать для изменения значения элемента.

Для доступа к элементу вектора обычно используется iterator.

const_reference

Тип, предоставляющий ссылку на const элемент, хранящийся в векторе. Он используется для чтения и выполнения const операций.

Комментарии

Тип const_reference нельзя использовать для изменения значения элемента.

Пример

const_reverse_iterator

Тип, предоставляющий итератор произвольного доступа, который может читать любой элемент const в векторе.

Комментарии

Тип const_reverse_iterator не может изменять значение элемента и используется для прохода по вектору в обратную.

Пример

crbegin

Возвращает константный итератор, который указывает на первый элемент в обратном векторе.

Возвращаемое значение

Комментарии

При возвращении значения crbegin vector объект не может быть изменен.

Пример

crend

Возвращает обратный реверсивный const итератор, указывающий на элемент, следующий за последним элементом в инвертированном векторе.

Возвращаемое значение

const Обратный завершающий итератор для инвертированного вектора. Он указывает элемент, следующий за последним элементом в инвертированном векторе, который совпадает с элементом перед первым элементом неинвертированного вектора. Этот элемент является заполнителем и не должен быть разыменован. Используйте его только для сравнения.

Комментарии

При возвращении значения crend (с соответствующим уменьшением) vector объект изменить нельзя.

Значение, возвращаемое, crend не должно быть разыменовано. Используйте его только для сравнения.

Пример

Возвращает указатель на первый элемент в векторе.

Возвращаемое значение

Пример

difference_type

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

Комментарии

difference_type также можно описать как число элементов между двумя указателями, так как указатель на элемент содержит его адрес.

Для доступа к элементу вектора обычно используется iterator.

Пример

emplace

Вставляет элемент, созданный на месте, в указанное положение в векторе.

Параметры

position
Место vector вставки первого элемента.

args
Аргументы конструктора. Функция определяет перегрузку конструктора, которую нужно вызвать, на основе переданных аргументов.

Возвращаемое значение

Комментарии

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

Пример

emplace_back

Добавляет элемент, созданный на месте, в конец вектора.

Параметры

args
Аргументы конструктора. Функция определяет перегрузку конструктора, которую нужно вызвать, на основе переданных аргументов.

Пример

empty

Проверяет, пуст ли вектор.

Возвращаемое значение

true значение, если вектор пуст; false значение, если вектор не пуст.

Пример

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

Возвращаемое значение

Комментарии

Пример

erase

Удаляет элемент или диапазон элементов в векторе из заданных позиций.

Параметры

position
Положение элемента, удаляемого из вектора.

first
Положение первого элемента, удаляемого из вектора.

last
Положение после последнего элемента, удаляемого из вектора.

Возвращаемое значение

Итератор, указывающий на первый элемент, оставшийся после удаленных элементов, или на указатель конца вектора, если такого элемента не существует.

Пример

front

Возвращает ссылку на первый элемент в векторе.

Возвращаемое значение

Ссылка на первый элемент в объекте вектора. Если вектор пуст, возвращаемое значение не определено.

Комментарии

При компиляции с помощью, _ITERATOR_DEBUG_LEVEL заданного как 1 или 2, возникает ошибка времени выполнения при попытке получить доступ к элементу в пустом векторе. Дополнительные сведения см. в разделе проверенные итераторы.

Пример

get_allocator

Возвращает копию объекта allocator, используемого для создания вектора.

Возвращаемое значение

Распределитель, используемый вектором.

Комментарии

Распределители для класса вектора определяют, как этот класс управляет хранилищем. Распределителей по умолчанию в классах контейнеров стандартной библиотеки C++ достаточно для большинства задач программирования. Написание и использование собственного класса распределителя является расширенной функцией C++.

Пример

insert

Вставляет элемент или несколько элементов или диапазон элементов в указанную позиции в вектор.

Параметры

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

value
Значение элемента, вставляемого в вектор.

count
Количество элементов, вставляемых в вектор.

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

last
Положение первого элемента после диапазона копируемых элементов.

Возвращаемое значение

Две первые функции insert возвращают итератор, указывающий на положение вставки нового элемента в вектор.

Комментарии

Используемые в качестве предусловия first и last не должны быть итераторами в векторе, в противном случае поведение будет неопределенным. Любая операция вставки может быть дорогостоящей, см. раздел класс для обсуждения vector производительности.

Пример

iterator

Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в векторе.

Комментарии

Тип iterator можно использовать для изменения значения элемента.

Пример

max_size

Возвращает максимальную длину вектора.

Возвращаемое значение

Максимально возможная длина вектора.

Пример

operator[]

Возвращает ссылку на элемент вектора в указанной позиции.

Параметры

position
Позиция элемента вектора.

Возвращаемое значение

Если заданная позиция больше или равна размеру контейнера, результат не определен.

Комментарии

При компиляции с помощью параметра, _ITERATOR_DEBUG_LEVEL заданного как 1 или 2, возникает ошибка времени выполнения при попытке доступа к элементу за пределами вектора. Дополнительные сведения см. в разделе проверенные итераторы.

Пример

operator=

Заменяет элементы вектора копией другого вектора.

Параметры

Комментарии

Пример

pointer

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

Комментарии

Тип pointer можно использовать для изменения значения элемента.

Пример

pop_back

Удаляет элемент в конце вектора.

Комментарии

Пример кода см. в разделе vector::push_back().

push_back

Добавляет элемент в конец вектора.

Параметры

value
Значение, назначаемое элементу, который добавляется в конец вектора.

Пример

rbegin

Возвращает итератор, указывающий на первый элемент в обратном векторе.

Возвращаемое значение

Обратный итератор произвольного доступа, указывающий на первый элемент в обратном векторе или на последний элемент в исходном векторе.

Комментарии

Пример

reference

Тип, предоставляющий ссылку на элемент, хранящийся в векторе.

Пример

Возвращает обратный реверсивный итератор, указывающий на элемент, следующий за последним элементом в инвертированном векторе.

Возвращаемое значение

Обратный завершающий итератор для инвертированного вектора. Он указывает элемент, следующий за последним элементом в инвертированном векторе, который совпадает с элементом перед первым элементом неинвертированного вектора. Этот элемент является заполнителем и не должен быть разыменован. Используйте его только для сравнения.

Комментарии

rend используется с обратным вектором точно так же, как end используется с вектором.

rend используется, чтобы проверить, достиг ли обратный итератор конца вектора.

Значение, возвращаемое, rend не должно быть разыменовано. Используйте его только для сравнения.

Пример

reserve

Резервирует минимальную длину хранилища для объекта вектора, при необходимости выделяя пространство.

Параметры

count
Минимальная длина хранилища, выделяемого для вектора.

Пример

resize

Определяет новый размер вектора.

Параметры

new_size
Новый размер вектора.

value
Значение инициализации новых элементов, добавленных в вектор, если новый размер больше исходного. Если значение опущено, новые объекты используют конструктор по умолчанию.

Комментарии

size отражает текущий размер вектора.

Пример

reverse_iterator

Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в обратном векторе.

Комментарии

Тип reverse_iterator используется для последовательного прохождения через вектор в обратную сторону.

Пример

shrink_to_fit

Удаляет лишнюю емкость.

Пример

Возвращает количество элементов в векторе.

Возвращаемое значение

Текущая длина вектора.

Пример

size_type

Тип, считающий количество элементов в векторе.

Пример

Меняет местами элементы двух векторов.

Параметры

Пример

value_type

Тип, представляющий тип данных, хранящихся в векторе.

Комментарии

Пример

vector

Конструирует вектор. Перегрузки создают вектор определенного размера или с элементами определенного значения. Или, как копия какого-либо другого вектора или его части. Некоторые перегрузки также позволяют указать распределитель для использования.

Параметры

allocator
Класс распределителя для использования с данным объектом. get_allocator Возвращает класс распределителя для объекта.

count
Количество элементов в создаваемом векторе.

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

source
Вектор, для которого создаваемый вектор станет копией.

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

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

init_list
Объект, initializer_list содержащий копируемые элементы.

Комментарии

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

Первые два конструктора определяют пустой исходный вектор. Второй конструктор явно указывает тип распределителя ( allocator ) для использования.

Восьмой конструктор использует initializer_list, чтобы указать элементы.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • Что такое ведомственные целевые программы
  • Что такое веб программист
  • Что такое веб программирование
  • Что такое веб программирование кратко
  • Что такое веб программирование доклад

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии