Поскольку operator[]
не выполняет каких-либо проверок границ (а просто переводит в некоторую арифметику указателей c при компиляции оптимизированного двоичного файла). Это так, что std::vector
может использоваться так же эффективно, как обычный массив * 1012. *
0
, который вы прочитали, это то, что происходит в памяти, где вектор зарезервировал пространство в куче. Обратите внимание, что операционная система инициализирует память программы с 0
в качестве меры безопасности (поэтому вы не можете просмотреть старые данные). Если ваши приложения работают немного дольше и страницы перезагружаются, вы также можете наблюдать другие значения мусора.
Вместо этого вы можете попробовать at()
, который проверит границы.