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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
#1

push_back vs emplace_back - C++

15.07.2013, 02:12. Просмотров 2804. Ответов 4
Метки нет (Все метки)

собственно тема обсуждалась там, я сделал вывод, что надо использовать 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 (C++):

Vector.emplace_back() err - C++
#include &lt;vector&gt; using namespace std; class A { public: int* a; A(){ a = new int; } ~A(){ delete a; } };

Push_back(1.) - C++
Доброго времени суток, уважаемые форумчане! Ковыряя чужой код, наткнулся на конструкцию: JcikList.push_back(1.); ...

Push_back - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;iterator&gt; #include &lt;algorithm&gt; using namespace std; int main() { ...

Vector . push_back - C++
Доброго времени суток! Помогите пожалуйста поправить код!! #include &lt;vector&gt; #include &lt;iostream&gt; using namespace std; ...

Push_back и стандарт С++ - C++
vector&lt;int&gt; vA; vA.push_back(s); В случае, если в vA нет свободного места, выделяется новое, старые данные перемещаются в новую...

list.push_back ошибка! - C++
Только начинаю писать на C++. Помогите пожалуйста разобраться в ламерской ошибке! В классе инициализирую list&lt;CProgressCtrl&gt;. Затем в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
15.07.2013, 03:22 #2
Есть еще одно отличие - если подать неправильные аргументы в emplace_back, то ошибку без поллитры не разберете.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
15.07.2013, 20:44  [ТС] #3
я относительно того,как мне это понимать:
C++
1
2
3
template <class... Args>
  void emplace_back (Args&&... args);
void push_back (const value_type& val);
Выползли какие то "&&" чертовщина какая-то. Реально я не парюсь конечно, но очень любопытно! Особенно к чему здесь &&
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.07.2013, 21:03 #4
soican, && это rvalue ссылка. Семантика перемещения.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.07.2013, 21:05 #5
Цитата Сообщение от Tulosba Посмотреть сообщение
&& это rvalue ссылка
&& - rvalue это или lvalue - зависит от контекста
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2013, 21:05
Привет! Вот еще темы с ответами:

push_back() and vector of classes - C++
Добрый вечер! Есть код следующего вида: class topic_message { public: char* name_topic; message ** messages; ...

Std push_back сумасшедший! - C++
Здрасьте, приятели по несчастью! У меня проблема. Не спрашивайте зачем мне это надо и почему, просто объясните почему так происходит. У...

Про list push_back - C++
list &lt;int&gt; temp; temp.push_back(3); temp.push_back(2); temp.push_back(1); list &lt;int&gt;::iterator iter = temp.begin(); for(int...

Ошибка push_back() в vector - C++
Доброго времени суток. Сразу код : #include &quot;stdafx.h&quot; #include &quot;expat.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.07.2013, 21:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru