Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Класс array: массив фиксированного размера
Класс array
реализует массив фиксированного размера, все элементы которого размещаются в памяти последовательно друг за другом. Прежде чем использовать класс, необходимо в начало программы добавить инструкцию:
#include <array>
Создание массива и заполнение значениями
Объявление класса array
:
template<typename T, std::size_t N> struct array;
При создании экземпляра класса array
после названия класса внутри угловых скобок через запятую задается тип данных элементов массива и его фиксированный размер:
std::array<int, 10> arr;
std::cout << arr.size() << std::endl; // 10
std::cout << arr.max_size() << std::endl; // 10
std::cout << std::boolalpha <<
arr.empty() << std::endl; // false
В этом примере мы создали массив элементов типа int
, содержащий 10
элементов. Массив имеет фиксированный размер и размещается в обычной памяти, а не в динамической. Изменить размер массива после создания объекта нельзя. Получить количество элементов позволяют методы size()
и max_size()
. Для определения, является ли массив пустым, можно использовать метод empty()
.
После создания объекта все элементы массива будут иметь произвольные значения, так называемый «мусор». Чтобы присвоить значения элементам массива при инициализации, нужно указать их через запятую внутри фигурных скобок:
std::array<int, 5> arr1{1, 2, 3, 4, 5};
for (int &el : arr1) std::cout << el << ' ';
std::cout << std::endl; // 1 2 3 4 5
std::array<int, 5> arr2 = {6, 7, 8};
for (int &el : arr2) std::cout << el << ' ';
std::cout << std::endl; // 6 7 8 0 0
Если количество значений внутри фигурных скобок меньше количества элементов массива, то остальные элементы автоматически получат значение 0
. Присвоить всем элементам массива одинаковое значение позволяет метод fill()
:
std::array<int, 5> arr;
arr.fill(1);
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 1 1 1 1 1
С помощью метода swap()
можно поменять элементы двух массивов местами:
std::array<int, 5> arr1, arr2;
arr1.fill(1);
arr2.fill(2);
arr1.swap(arr2);
for (int &el : arr1) std::cout << el << ' ';
std::cout << std::endl; // 2 2 2 2 2
for (int &el : arr2) std::cout << el << ' ';
std::cout << std::endl; // 1 1 1 1 1
Над двумя объектами класса array
определены операции ==
, !=
, <
, <=
, >
и >=
. Пример сравнения двух объектов:
std::array<int, 2> arr1 = {5, 1};
std::array<int, 2> arr2 = {5, 1};
if (arr1 == arr2) {
std::cout << "arr1 == arr2" << std::endl;
}
Кроме того, один объект можно присвоить другому объекту. В этом случае выполняется поэлементное копирование. Пример:
std::array<int, 2> arr1 = {5, 1}, arr2;
arr2 = arr1;
for (int &el : arr2) std::cout << el << ' ';
std::cout << std::endl; // 5 1
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов