Описание тега 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<std::vector<double>> 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<std::pair<int,int> > my_vec; my_vec.push_back( {1,2} ); //this works my_vec.emplace_back( {1,2} ); // this doesn't work std::pair<int,int> 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<typename Type, typename... Args> size_t create(Args... args) { return this->add(n…
07 май '18 в 09:55
2
ответа
Почему векторный конструктор принимает только последнее значение параметра при использовании в empor unordered_map?
Я пытаюсь реализовать unordered_map> с помощью unordered_map::emplace #include <iostream> #include <vector> #include <unordered_map> using namespace std; int main () { unordered_map<char,vector<int>> amap; amap.emplace(…
21 дек '18 в 06:43
1
ответ
Разместить непосредственно в std::map пары
Почему этот код не скомпилируется? std::map<int,std::pair<int,int>> 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<TestClass> test_set; test_set.insert(TestClass("d")); test_set.emplace("d"…
22 апр '16 в 14:37
1
ответ
Эмплозоподобная конструкция для std::vector
Представьте, что я хочу построить фиксированный размер std::vector объектов без конструкторов перемещения или копирования, таких как std::atomic<int>, В этом случае основной 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 <map> #include <vector> int main () { std::map<size_t, std::vector<size_t>> m; m.emplace(42, {}); // FAILS m.insert({42, {}}); // WORKS } П…
16 май '18 в 11:02