Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Класс array: доступ к элементам
К любому элементу контейнера можно обратиться как к элементу массива. Достаточно указать его индекс в квадратных скобках. Нумерация начинается с нуля. Можно как получить значение, так и изменить его. Если индекс выходит за границы диапазона, то возвращаемое значение не определено. Пример доступа к элементу по индексу:
std::array<int, 2> arr = {1, 1};
std::cout << arr[0] << " " << arr[1] << std::endl; // 1 1
arr[1] = 2;
std::cout << arr[0] << " " << arr[1] << std::endl; // 1 2
Для доступа к элементам предназначены следующие методы:
at()
— возвращает ссылку на элемент, расположенный по индексуpos
. Метод позволяет как получить значение, так и изменить его. Если индекс выходит за границы диапазона, то метод генерирует исключение. Прототипы метода:
reference at(size_type pos);
const_reference at(size_type pos) const;
Пример:
std::array<int, 2> arr = {1, 1};
arr.at(1) = 2;
std::cout << arr.at(0) << " " << arr.at(1) << std::endl; // 1 2
front()
— возвращает ссылку на первый элемент. Метод позволяет как получить значение, так и изменить его. Прототипы метода:
reference front() noexcept;
const_reference front() const noexcept;
back()
— возвращает ссылку на последний элемент. Метод позволяет как получить значение, так и изменить его. Прототипы метода:
reference back() noexcept;
const_reference back() const noexcept;
Пример:
std::array<int, 3> arr = {1, 2, 3};
std::cout << arr.front() << " " << arr.back() << std::endl;
// 1 3
arr.front() = 0;
arr.back() = 5;
std::cout << arr[0] << " " << arr[2] << std::endl; // 0 5
begin()
,end()
,cbegin()
,cend()
,rbegin()
,rend()
,crbegin()
иcrend()
— возвращают итераторы (см. разд. 16.1.1). Изменим и выведем значение первого элемента:
std::array<int, 3> arr = {1, 2, 3};
std::array<int, 3>::iterator it = arr.begin();
std::cout << *it << std::endl; // 1
*it = 0;
std::cout << *it << std::endl; // 0
Вместо методов begin()
и end()
можно воспользоваться одноименными функциями. Выведем значение последнего элемента:
std::array<int, 3> arr = {1, 2, 3};
std::array<int, 3>::iterator it = std::end(arr);
std::cout << *(--it) << std::endl; // 3
Все элементы размещаются в памяти последовательно. Поэтому имеется возможность перебора элементов с помощью указателей. Для указателей определены специальные типы:
pointer
— обычный указатель. Можно как получить значение, так и изменить:
typedef T value_type;
typedef value_type* pointer;
const_pointer
— константный указатель. Изменить значение нельзя:
typedef const value_type* const_pointer;
Присвоить указателю адрес первого элемента позволяет метод data()
. Прототипы метода:
pointer data() noexcept;
const_pointer data() const noexcept;
Пример:
std::array<int, 3> arr = {1, 2, 3};
int *p = arr.data();
std::cout << *p << std::endl; // 1
*p = 0;
std::cout << arr[0] << std::endl; // 0
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов