std::array
Определено в заголовочном файле <array>
|
||
template< class T, |
(начиная с C++11) | |
std::array
- это контейнер, инкапсулирующий массив фиксированного размера.
Эта структура имеет ту же семантику, что и C-массивы. Размер и эффективность array<T,N> такие же, как у C-массива T[N]. array предоставляет некоторые возможности стандартных контейнеров, такие как знание собственного размера, поддержка присваивания, итераторы произвольного доступа и т.д.
Можно создавать array нулевой длины (N == 0
). В таком случае, array.begin() == array.end(), представляет некоторое уникальное значение. Последствия вызова front() или back() для массивов нулевой длины не определены.
array
- это агрегатный тип (не имеет конструкторов и закрытых/защищённых членов), что позволяет использовать агрегатные инициализаторы.
array также может быть использован как кортеж из N
элементов одного типа.
Содержание |
[править] Типы
Тип | Определение |
value_type
|
T
|
size_type
|
size_t |
difference_type
|
std::ptrdiff_t |
reference
|
value_type&
|
const_reference
|
const value_type&
|
pointer
|
T*
|
const_pointer
|
const T*
|
iterator
|
RandomAccessIterator
|
const_iterator
|
Константный итератор с произвольным доступом |
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
[править] Функции-члены
Доступ к элементам | |
Предоставляет доступ к указанному элементу с проверкой индекса (public функция-член) | |
Предоставляет доступ к указанному элементу (public функция-член) | |
Предоставляет доступ к первому элементу (public функция-член) | |
Предоставляет доступ к последнему элементу (public функция-член) | |
(C++11) |
Предоставляет прямой доступ к внутреннему содержимому (public функция-член) |
Итераторы | |
Возвращает итератор на первый элемент (public функция-член) | |
Возвращает итератор на элемент, следующий за последним (public функция-член) | |
Возвращает обратный итератор на первый элемент (public функция-член) | |
Возвращает обратный итератор на элемент, следующий за последним (public функция-член) | |
Размер | |
Проверяет отсутствие элементов в контейнере (public функция-член) | |
Возвращает количество элементов в контейнере (public функция-член) | |
Возвращает максимально допустимое количество элементов в контейнере (public функция-член) | |
Операции | |
заполнить контейнер указанным значением Оригинал: fill the container with specified value Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-член) | |
Обменивает содержимое (public функция-член) |
[править] Функции не члены
Лексикографически сравнивает значения в array (шаблон функции) | |
accesses an element of an array (шаблон функции) | |
Специализированный std::swap алгоритм (шаблон функции) |
[править] Вспомогательные классы
получает размер array Оригинал: obtains the size of an array Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (специализация шаблона класса) | |
получает тип элементов array Оригинал: obtains the type of the elements of array Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (специализация шаблона класса) |
[править] Пример
#include <string> #include <iterator> #include <iostream> #include <algorithm> #include <array> int main() { // конструктор использует агрегатный инициализатор std::array<int, 3> a1{ {1,2,3} }; // требуются двойные фигурные скобки, std::array<int, 3> a2 = {1, 2, 3}; // за исключением операций присваивания std::array<std::string, 2> a3 = { {std::string("a"), "b"} }; // поддерживаются обобщённые алгоритмы std::sort(a1.begin(), a1.end()); std::reverse_copy(a2.begin(), a2.end(), std::ostream_iterator<int>(std::cout, " ")); // поддерживается ranged for цикл for(auto& s: a3) std::cout << s << ' '; }
Вывод:
3 2 1 a b