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



бет5/7
Дата16.10.2023
өлшемі73,49 Kb.
#115868
1   2   3   4   5   6   7
Доступ к элементу
Доступ к значениям массива через оператор индекса осуществляется как обычно:
std::cout << myarray[1];
myarray[2] = 7;
Так же, как и в стандартных фиксированных массивах, оператор индекса не выполняет никаких проверок на диапазон. Если указан недопустимый индекс, то произойдут плохие вещи.
std::array поддерживает вторую форму доступа к элементам массива — функция at(), которая осуществляет проверку диапазона:
1. at(pos)
Возвращает ссылку на элемент в позиции pos с проверкой границ. Если pos элемент не находится в пределах диапазона контейнера, генерируется исключение типа out_of_range.
Сложность постоянна O(1).
std::array myarray { 8, 6, 4, 1 };
myarray.at(1) = 7; // элемент массива под номером 1 - корректный, присваиваем ему значение 7
myarray.at(8) = 15; // элемент массива под номером 8 - некорректный, получим ошибку
В примере, приведенном выше, вызов myarray.at(1) проверяет, есть ли элемент массива под номером 1, и, поскольку он есть, возвращается ссылка на этот элемент. Затем мы присваиваем ему значение 7. Однако, вызов myarray.at(8) не срабатывает, так как элемента под номером 8 в массиве нет. Вместо возвращения ссылки, функция at() выдает ошибку, которая завершает работу программы (на самом деле выбрасывается исключение типа std::out_of_range. Об исключениях мы поговорим на соответствующих лекциях). Поскольку проверка диапазона выполняется, то функция at() работает медленнее (но безопаснее), чем оператор [].
Пример:
#include

int main()


{
std::array arr;

// write values


arr.at(0) = 2;
arr.at(1) = 4;
arr.at(2) = 6;
// read values
int a = arr.at(0); // a is now 2
int b = arr.at(1); // b is now 4
int c = arr.at(2); // c is now 6

return 0;


}


2) operator[pos]
Возвращает ссылку на элемент в позиции pos без проверки границ. Если pos элемент не находится в пределах диапазона контейнера, может возникнуть ошибка, связанная с нарушением сегментации во время выполнения. Этот метод обеспечивает доступ к элементам, эквивалентный классическим массивам, и, следовательно, более эффективный, чем at(pos).
Сложность постоянна O(1).
#include

int main()


{
std::array arr;

// write values


arr[0] = 2;
arr[1] = 4;
arr[2] = 6;
// read values
int a = arr[0]; // a is now 2
int b = arr[1]; // b is now 4
int c = arr[2]; // c is now 6

return 0;


}




Достарыңызбен бөлісу:
1   2   3   4   5   6   7




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет