Форум программистов, компьютерный форум CyberForum.ru

push_back vs emplace_back - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
15.07.2013, 02:12     push_back vs emplace_back #1
собственно тема обсуждалась там, я сделал вывод, что надо использовать emplace_back теперь, вроде как эффективнее местами.
Одно визуальное изуальное отличие я уже нашёл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// list::emplace_back
#include <iostream>
#include <list>
 
int main ()
{
  std::list< std::pair<int,char> > mylist,mylist1;
  mylist.emplace_back(10,'a');
  mylist1.push_back({12345,'fghj'}); // отличие от emplace.back!!!
  mylist.emplace_back(20,'b');
  mylist.emplace_back(30,'c');
  std::cout << "mylist contains:";
  for (auto& x: mylist)
    std::cout << " (" << x.first << "," << x.second << ")";std::cout << std::endl;
 std::cout << "mylist1 contains:";
  for (auto& x: mylist1)
    std::cout << " (" << x.first << "," << x.second << ")";
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2013, 02:12     push_back vs emplace_back
Посмотрите здесь:

list.push_back ошибка! C++
C++ Vector . push_back
C++ push_back() and vector of classes
C++ Ошибка push_back() в vector
C++ Std push_back сумасшедший!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
15.07.2013, 03:22     push_back vs emplace_back #2
Есть еще одно отличие - если подать неправильные аргументы в emplace_back, то ошибку без поллитры не разберете.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
15.07.2013, 20:44  [ТС]     push_back vs emplace_back #3
я относительно того,как мне это понимать:
C++
1
2
3
template <class... Args>
  void emplace_back (Args&&... args);
void push_back (const value_type& val);
Выползли какие то "&&" чертовщина какая-то. Реально я не парюсь конечно, но очень любопытно! Особенно к чему здесь &&
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
15.07.2013, 21:03     push_back vs emplace_back #4
soican, && это rvalue ссылка. Семантика перемещения.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.07.2013, 21:05     push_back vs emplace_back #5
Цитата Сообщение от Tulosba Посмотреть сообщение
&& это rvalue ссылка
&& - rvalue это или lvalue - зависит от контекста
Yandex
Объявления
15.07.2013, 21:05     push_back vs emplace_back
Ответ Создать тему
Опции темы

Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru