После того, как вчера задал фиктивные вопросы, поэкспериментировал и прочитал довольно много о emplace_back
по push_back
, я все еще не совсем уверен, какой из них я должен использовать «по умолчанию», то есть большую часть времени.
Как было указано в ответе на популярный вопрос « Зачем мне когда-либо использовать push_back вместо emplace_back? » и в других статьях первое впечатление, которое получили люди после введения emplace_back
, что «он может делать все, что может сделать push_back (insert), а иногда и лучше» - неверно.
Пока что у меня сложилось впечатление, что в случаях, когда я использую семантику перемещения ( или если мне нужно сделать копию), где я не могу извлечь выгоду из создания объекта на месте, и когда мне не нужно возвращаемое значение, было бы безопаснее использовать push_back
, чтобы не столкнуться с проблемами. можно получить с явным конструктором, описанным в ссылках, и, возможно, с некоторыми другими.
Проще говоря, если я не использую новые функции, которые есть в emplace_back
, а push_back
/ insert
- нет, мне лучше придерживаться push_back
/ insert
.
Я прав, или я снова что-то упускаю?