История изменений
Исправление alysnix, (текущая версия) :
при замене index на unsigned проверку index<0 можно будет убрать, больше ничего не меняя - то есть она была чисто мусорным артефактом неверно выбранного типа для индекса.
а откуда взято что в плюсах индекс не может быть легально отрицательным? поставьте указатель в средину массива и адресуйте от него инджексом в разные стороны. на этом еще и выиграете в зависимости от алгоритма.
типа так:
int larr[10];
int* lptr = &larr[5];
lptr[-3] = 0;
при замене index на unsigned проверку index<0 можно будет убрать, больше ничего не меняя - то есть она была чисто мусорным артефактом неверно выбранного типа для индекса.
проверку для int за одну операцию(если индекс не может быть отрицательным) делается кастом к unsigned. разумеется обладая знаниями о представлении целых в данном случае. выбирать сразу unsigned как тип индекса, только ради проверки, вовсе необязательно.
Исходная версия alysnix, :
при замене index на unsigned проверку index<0 можно будет убрать, больше ничего не меняя - то есть она была чисто мусорным артефактом неверно выбранного типа для индекса.
а откуда взято что в плюсах индекс не может быть легально отрицательным? поставьте указатель в средину массива и адресуйте от него инджексом в разные стороны. на этом еще и выиграете в зависимости от алгоритма.
типа так:
int larr[10];
int* lptr = &larr[5];
lptr[-3] = 0;
при замене index на unsigned проверку index<0 можно будет убрать, больше ничего не меняя - то есть она была чисто мусорным артефактом неверно выбранного типа для индекса.
проверку за одну операцию(если индекс не может быть отрицательным) делается кастом к unsigned. разумеется обладая знаниями о представлении целых в данном случае. выбирать сразу unsigned как тип индекса, только ради проверки, вовсе необязательно.