Эта функция, не являющаяся членом, возвращает ссылку на элемент в постоянной позиции pos во время компиляции без проверки границ. Если pos находится за пределами диапазона контейнера, может возникнуть ошибка, связанная с нарушением сегментации во время выполнения.
Сложность постоянна O(1).
#include
int main()
{
std::array arr;
// write values
std::get<0>(arr) = 2;
std::get<1>(arr) = 4;
std::get<2>(arr) = 6;
// read values
int a = std::get<0>(arr); // a is now 2
int b = std::get<1>(arr); // b is now 4
int c = std::get<2>(arr); // c is now 6
return 0;
}
4) front() Возвращает ссылку на первый элемент в контейнере. Вызов front() для пустого контейнера не определен.
Сложность постоянна O(1).
Примечание: Для контейнера c выражение c.front() эквивалентно *c.begin().
#include int main()
{
std::array arr{ 2, 4, 6 };
int a = arr.front(); // a is now 2
return 0;
}
5) back() Возвращает ссылку на последний элемент в контейнере. Вызов back() для пустого контейнера не определен.
Сложность постоянна O(1).
#include int main()
{
std::array arr{ 2, 4, 6 };
int a = arr.back(); // a is now 6
return 0;
}
6) data() Возвращает указатель на базовый массив, служащий хранилищем элементов. Указатель таков, что всегда является допустимым диапазоном, даже если контейнер пуст (range [data(); data() + size()) в этом случае разыменование невозможно).
Сложность постоянна O(1).
#include #include int main ()
{
const char* cstr = "Test string";
std::array arr;
std::memcpy(arr.data(), cstr, 12); // copy cstr to arr
std::cout << arr.data(); // outputs: Test string
return 0;
}
2>1>0>2>1>0>