Описание тега emplace

По вопросам, касающимся создания объектов непосредственно внутри некоторого объекта-контейнера, а не копирования / перемещения объекта в контейнер.
4 ответа

Использовать unordered_set в unordered_map

Как я могу добавить (статически определенный) unordered_set к unordered_map, не копируя unordered_set? Я попробовал это: std::unordered_map<int, std::unordered_set<std::string>> my_map; for (int i=0; i<100; i++) my_map.emplace(i, {"fo…
24 июн '15 в 07:43
4 ответа

Есть ли в C++ аналог функций emplace/emplace_back в C++ 11?

Начиная с C++11, можно написать что-то вроде #include <vector> #include <string> struct S { S(int x, const std::string& s) : x(x) , s(s) { } int x; std::string s; }; // ... std::vector<S> v; // add new object to the vector v //…
14 мар '16 в 11:04
1 ответ

Объект Emplace, полученный из не копируемого в вектор

У меня есть объекты, которые содержат указатели и делятся ими с другими. Перемещение их - это нормально, но копирование - нет. Я хотел бы хранить их в векторах и картах. Следующий код работает только тогда, когда A не имеет деструктора Однако мне по…
20 фев '19 в 13:46
2 ответа

Как реализовать простой контейнер с размещением новых и внедрением функциональности?

Мне нужно реализовать контейнер для хранения количества элементов и по какой-то причине он должен работать без какого-либо выделения кучи. Другое требование состоит в том, что элементы контейнера не должны копироваться или перемещаться каким-либо об…
03 окт '15 в 18:33
1 ответ

С CUDA 8 + gcc 5 unordered_map emplace со строковым ключом не компилируется

Рассмотрим следующий код: #include <string> #include <unordered_map> int main() { std::string s("hello"); std::unordered_map<std::string, int> map; map.emplace(s, 123); return 0; } Это прекрасно работает с: GCC 4.9.3, без CUDA GCC …
29 май '16 в 19:17
0 ответов

Вызов метода emplace() для std::vector

Как правильно вызвать emplace() метод для std::vectorс учетом следующих шаблонных объявлений? Требуется разместить элемент внутри вектора impl_tree в данной позиции, после строительства tree объект шаблона класса. (Обратите внимание, что воспроизвод…
13 фев '18 в 00:33
2 ответа

Как set::emplace обрабатывает объекты, которые уже находятся в наборе?

У меня есть набор объектов, и я хочу использовать emplace для добавления объектов в набор. Если эквивалентный объект еще не существует в наборе, set::emplace создает объект и помещает его в набор. Если набор уже имеет эквивалентный объект, set::empl…
27 мар '14 в 01:20
1 ответ

Эффективное копирование / приведение больших матриц std:: vector<std:: vector <double >> и armadillo arma::mat

Есть ли эффективный механизм копирования между std::vector&lt;std::vector&lt;double&gt;&gt; std_mat arma::mat arma_mat где arma::mat arma_mat относится к матричной / математической библиотеке броненосца. http://arma.sourceforge.net/ Мой проект завис…
17 авг '16 в 20:31
1 ответ

emplace_back вызывает оператор присваивания в векторах, но не в списке

Согласно http://www.cplusplus.com/reference/vector/vector/emplace_back/ я понял, что emplace_back будет создавать объекты на месте без вызова оператора присваивания. Но в случае std::vector они вызывают оператор присваивания и не вызывают операторы …
09 фев '15 в 18:34
2 ответа

Эффективность push + back() в C++ 11 с std::move и emplace_back() для уже созданных объектов

В С ++11 emplace_back() как правило, предпочтительнее (с точки зрения эффективности) push_back() так как это позволяет на месте строительства, но это по-прежнему так при использовании push_back(std::move()) с уже построенным объектом? Например, это …
11 ноя '14 в 08:41
2 ответа

emplace_back() против push_back при вставке пары в std::vector

Я определил следующее std::vector&lt;std::pair&lt;int,int&gt; &gt; my_vec; my_vec.push_back( {1,2} ); //this works my_vec.emplace_back( {1,2} ); // this doesn't work std::pair&lt;int,int&gt; temp_pair = {1,2}; my_vec.emplace_back( temp_pair ); //thi…
23 дек '18 в 02:53
1 ответ

Приоритет empque создает ошибку сегментации

Следующий код дает ошибку сегментации, может кто-то просветить меня? Все, чего я хотел добиться - это отсортировать очередь с приоритетами по возрастанию tv.t или по убыванию tv.m. struct tv { int m; int c; int t; tv(int mm, int cc, int tt): m(mm), …
01 мар '16 в 04:24
0 ответов

Неработающий аргумент создание шаблонного объекта на контейнере не работает

Ниже приведен пример (не весь класс, только соответствующие части) class Container { private: size_t m_next_id; std::unordered_map m_objects; public: template&lt;typename Type, typename... Args&gt; size_t create(Args... args) { return this-&gt;add(n…
2 ответа

Почему векторный конструктор принимает только последнее значение параметра при использовании в empor unordered_map?

Я пытаюсь реализовать unordered_map> с помощью unordered_map::emplace #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;unordered_map&gt; using namespace std; int main () { unordered_map&lt;char,vector&lt;int&gt;&gt; amap; amap.emplace(…
21 дек '18 в 06:43
1 ответ

Разместить непосредственно в std::map пары

Почему этот код не скомпилируется? std::map&lt;int,std::pair&lt;int,int&gt;&gt; m; m.emplace(1,1,1); Предполагая, что мы можем редактировать код std::map::emplaceМожно ли изменить его, чтобы сделать предыдущий код действительным?
28 апр '16 в 06:13
2 ответа

C++ Set emplace против вставки, когда объект уже создан

class TestClass { public: TestClass(string s) { } }; Когда есть TestClass, я понимаю разницу между emplace и insert (конструкции emplace на месте при вставке копий) set&lt;TestClass&gt; test_set; test_set.insert(TestClass("d")); test_set.emplace("d"…
22 апр '16 в 14:37
1 ответ

Эмплозоподобная конструкция для std::vector

Представьте, что я хочу построить фиксированный размер std::vector объектов без конструкторов перемещения или копирования, таких как std::atomic&lt;int&gt;, В этом случае основной std::atomic класс имеет 1-аргументный конструктор, который принимает …
13 окт '17 в 19:06
1 ответ

Почему перемещение необходимо с emplace_back в этом примере?

Следующий минимальный рабочий пример компилируется, когда используется код в опции 1 или 2, но не компилируется, когда используется код в опции 3. Я предполагал, что emplace_back() неявно использует / вызывает move конструктор, так почему явный move…
15 ноя '17 в 17:32
1 ответ

Расположение в D

Есть ли в D что-то похожее на C++11? emplace_back()? Обычно я хочу этого, когда добавляю одну или несколько структур в конец массива или некоторого другого контейнера D с семантикой значений на его членах? Обновление: я думаю, что это правильный отв…
16 сен '13 в 20:10
3 ответа

std::map::emplace не удается разрешить, но вставка rvalue работает - почему?

Рассмотрим следующую попытку вставить пустой vector с числовым ключом в map: #include &lt;map&gt; #include &lt;vector&gt; int main () { std::map&lt;size_t, std::vector&lt;size_t&gt;&gt; m; m.emplace(42, {}); // FAILS m.insert({42, {}}); // WORKS } П…