vector<int> input = {1, 2, 3, 4, 17, 117, 517, 997};
cout<< "input vector at index -1 is: " << input[-1] <<endl;
Используя выше код, то результат будет: вход с индексом -1: 0. Однако, если мы используем follwoing:Доступ отрицательный показатель вектора с помощью оператора [] и .at()
vector<int> input = {1, 2, 3, 4, 17, 117, 517, 997};
cout<< "input vector at index -1 is: " << input.at(-1) <<endl;
В результате получилось бы: вход с индексом -1 is: libC++ abi.dylib: завершение с неперехваченным исключением типа std :: out_of_range: vector.
Может кто-нибудь объяснить мне причину? Спасибо.
Не могли бы вы рассказать мне, что такое ошибка? Кажется, что для каждого входного вектора его индекс в -1 всегда равен 0, когда я использую оператор []. – Feng
@FengZhou Это совпадение, что вы видите '0' в этой позиции. Это по-прежнему незаконное заявление. Вы смотрите вне содержимого вектора. Содержимое, на которое вы не можете смотреть, содержит '0'. –
Спасибо. Да, это совпадение, я думаю. – Feng