Вопросы по теме 'emplace'

Конструкция, подобная размещению для std :: vector
Представьте, что я хочу построить std::vector объектов фиксированного размера без конструкторов перемещения или копирования, таких как std::atomic<int> . В этом случае базовый класс std::atomic имеет конструктор с 1 аргументом, который...
252 просмотров
schedule 24.10.2021

Почему emplace_back быстрее push_back?
Я думал, что emplace_back будет победителем, когда сделаю что-то вроде этого: v.push_back(myClass(arg1, arg2)); потому что emplace_back построит объект сразу в векторе, а push_back сначала создаст анонимный объект, а затем скопирует его...
49710 просмотров
schedule 24.03.2022

Эффективный и элегантный возврат emplaced unique_ptr
Я узнал ( благодаря комментарию StackOverflow ) недостаток безопасности в моем коде: std::vector<std::unique_ptr<Item>> items; template<class... TS> Item& create(TS&&... mArgs) { auto item(new...
736 просмотров
schedule 05.05.2022

зачем мне использовать piecewise_construct в map::emplace для конструкторов с одним аргументом некопируемых объектов?
Следующий код не будет компилироваться в gcc 4.8.2. Проблема в том, что этот код попытается скопировать конструкцию std::pair<int, A> , что невозможно из-за отсутствия struct A конструкторов копирования и перемещения. Здесь gcc не...
8702 просмотров
schedule 29.05.2022

Почему нет emplace или emplace_back для std::string?
Я почти уверен, что видел этот вопрос здесь раньше, но я не могу найти сообщение, когда пытался выполнить поиск, и я не помню ответа. Почему нет emplace или emplace_back для std::string ? Я не думаю, что это связано с использованием char ,...
953 просмотров
schedule 10.06.2022

emplace_back to std::vector‹std::array› не работает
Меня удивило, что такую ​​простую программу нельзя скомпилировать с помощью gcc, clang и msvc: #include <array> #include <vector> int main() { std::vector<std::array<int, 3>> v; v.emplace_back( 1, 2, 3 ); return...
72 просмотров
schedule 04.08.2022

ошибка компиляции unordered_map emplace
У меня есть следующий код в файле myclass.h : typedef std::unordered_set< int, int> Parameters; class MyClass { public: void myFunction(); private: Parameters* m_params; } Тогда myFunction выглядит следующим...
270 просмотров
schedule 02.10.2022

Вставить прямо в std::map пары
Почему этот код не компилируется? std::map<int,std::pair<int,int>> m; m.emplace(1,1,1); Предполагая, что мы можем редактировать код std::map::emplace , возможно ли изменить его, чтобы предыдущий код стал действительным?
1180 просмотров
schedule 09.05.2023

Как размещать элементы при построении std::vector?
Я хочу построить std::vector с некоторыми элементами, имеющими эти элементы, созданные каким-то конкретным конструктором, а не конструктором по умолчанию. Другими словами, я хочу разместить элементы при построении вектора. Как я могу это сделать?...
1356 просмотров
schedule 22.03.2023

Невозможно emplace_back() использовать инициализатор в фигурных скобках для вектора векторов.
Это несколько связано с предыдущим вопросом, который я задал об использовании emplace_back в векторе пар. emplace_back() vs push_back при вставке пары в стандартный::вектор Теперь мой вопрос касается использования emplace_back в векторе...
636 просмотров
schedule 15.05.2023

Почему Clang 12 отказывается инициализировать агрегаты способом C++20?
Насколько я понимаю, в режиме C++20 должна работать следующая программа: #include <vector> struct B{ int a0, a1; }; int main() { std::vector<B> bs; bs.emplace_back( 0, 0 ); } И это действительно так в Visual Studio 2019 и...
100 просмотров