Мне нужно массив или вектор без выхода за пределы.
Что это такое? допустим
Создаю вектор или массив на 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
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
Комментариев нет:
Отправить комментарий