mrjbom
@mrjbom

Инициализация пустого вектора int по умолчанию?

Есть такой код:
vector<int> vec;
vector[2] = 12;


Почему он валидный? Ведь мы не указали размер, он же должен быть по умолчанию быть абсолютно пустым?
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Код компилируется, но из этого не следует, что он валидный.
В данном случае, тут UB и программа будет вести себя непредсказуемо.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vanyamba-electronics
Он просто скомпилировался как
vector<int> vec;
int& tmp = vec.operator [] (2);
operator = (tmp, 12);

Так что всё валидно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы