если почитать что делает push_back, и подумать пару минут, то можно понять, что других вариантов просто не существует
a будет скопирован внутрь vec, благодаря чему vec.back() = {} не испортит a, но если написать vec.push_back(std::vector<int>{ /* ... */}); то никого копирования делать не нужно – сконструировали временный вектор, сразу переместили его. Потому что в этом случае, даже если сделать vec.back() = {} пользователь всё-равно не сможет заметить, что это отразилось на временном векторе – незачем копию держать
Обсуждают сегодня