Страницы

Поиск по вопросам

понедельник, 18 февраля 2019 г.

Массив без выхода за пределы C++

Мне нужно массив или вектор без выхода за пределы. Что это такое? допустим Создаю вектор или массив на 10 символов типа int Все 10 элементов равны 10 когда беру a[0],a[4],a[9] == 10; но как сделать так что бы
a[10 (это 0) ] == 10 a[12 (это 2) ] == 10
желательно ещё для отрицательных чисел


Ответ

Если вопрос в том, как получить индекс, не выходящий за пределы массива при отрицательных индексах, то можно индекс массива вычислять так:
i < 0 ? -i%10 : i % 10
Например:
#include using namespace std;

int main() { int a[10] = {1,2,3,4,5,6,7,8,9,10};
for(int i=-12; i<12; ++i){ cout << "a[" << i << "] = " << a[i < 0 ? -i%10 : i % 10] << endl; } return 0; }
На выходе будет:
a[-12] = 3 a[-11] = 2 a[-10] = 1 a[-9] = 10 a[-8] = 9 a[-7] = 8 a[-6] = 7 a[-5] = 6 a[-4] = 5 a[-3] = 4 a[-2] = 3 a[-1] = 2 a[0] = 1 a[1] = 2 a[2] = 3 a[3] = 4 a[4] = 5 a[5] = 6 a[6] = 7 a[7] = 8 a[8] = 9 a[9] = 10 a[10] = 1 a[11] = 2

Комментариев нет:

Отправить комментарий