Разница между emplace_back и push_back в векторе std::regexC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Разница между emplace_back и push_back в векторе std::regex

Сообщение Anonymous »

Почему v.emplace_back(nullptr); компилируется (а затем приводит к ошибке выполнения), но возникает ошибка компилятора для v.push_back(nullptr);?В некоторых статьях в большинстве случаев рекомендуется использовать emplace_back вместо push_back, но emplace_back может вызвать потенциальные ошибки. Когда мне следует избегать использования emplace_back?
#include
#include

int main() {
std::vector v;

v.emplace_back(nullptr); // runtime error
v.push_back(nullptr); // compile error

return 0;
}

Вывод gcc:
: In function 'int main()':
:9:14: error: no matching function for call to 'std::vector::push_back(std::nullptr_t)'
9 | v.push_back(nullptr); // compile error
| ~~~~~~~~~~~^~~~~~~~~


Подробнее здесь: https://stackoverflow.com/questions/790 ... f-stdregex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»