Здравствуйте, ·, Вы писали:
·>В С++ — другая крайность. Индекс вообще проверяться не будет (вычислили значение i по таблице неправильно и бабах).
·>А если захочешь безопасностьи то вместо vect[i] будешь использовать vect.at(i) и компилятор С++ столкнётся с той же бедой, что и сишарп.
Есть третий вариант: во время разработки и тестирования включаются asserts, checked iterators и прочий defensive programming, которые помогают отлавливать подобные проблемы
http://coliru.stacked-crooked.com/a/b70a433c52e5b336
#include <vector>
int main()
{
std::vector<int> xs;
xs[5];
}
/usr/local/include/c++/6.1.0/debug/vector:415:
Error: attempt to subscript container with out-of-bounds index 5, but
container only holds 0 elements.
Objects involved in the operation:
sequence "this" @ 0x0x7fff719fd1d0 {
type = std::__debug::vector<int, std::allocator<int> >;
}
bash: line 7: 14850 Aborted (core dumped) ./a.out