Где находятся объекты в векторе
выделяется? кучи?
Это зависит от реализации STL, но, по всей вероятности, от кучи, да.
does vector have boundary check? If the index out of the boundary,
what error will happen?
Да, вектор растет динамически, вы можете проверить его размер, используя функцию-член capacity()
. Если ему не хватает места, он обычно выделяет больше места, используя функцию-член reserve()
.
Почему массив быстрее, чем вектор?
Массивы могут быть быстрее, поскольку они представляют собой простые данные, к которым нет необходимости обращаться через объект-оболочку, например vector.
. Для вашего удобства vector
можно представить как аккуратно упакованный массив.
Есть ли случай, когда вектор
не применимо, но массив является обязательным?
Я думаю, что могут быть времена, когда массив предпочтительнее, чем vector
. Например, когда имеешь дело с устаревшим кодом C или когда скорость имеет первостепенное значение. Но обычно вы можете решить любую проблему с массивом, поместив данные в STL vector
.