TGViewer
Senior C++ Developer Senior C++ Developer @seniorcpp · 11.6K subscribers
Post #1842 3.31K
try_emplace

try_emplace
— это одна из функций в стандартной библиотеке C++, введенная в стандарте C++17. Она используется для вставки элементов в контейнеры, такие как std::map, std::unordered_map, std::set, и std::unordered_set, с оптимизированным процессом вставки.

Сигнатура try_emplace выглядит следующим образом:

template<class... Args>
std::pair<iterator, bool> try_emplace(const key_type& k, Args&&... args);


Она принимает ключ k и набор аргументов Args, которые используются для создания значения, которое будет ассоциировано с этим ключом. Функция возвращает пару, где первый элемент — итератор к вставленному или уже существующему элементу, а второй элемент — флаг, указывающий, был ли элемент вставлен (true) или уже существовал (false).

Преимущество try_emplace заключается в том, что она позволяет оптимизировать вставку в контейнеры, так как она не создает промежуточный объект, если элемент с заданным ключом уже существует. Вместо этого она создает значение внутри контейнера, если ключ отсутствует, и возвращает итератор к созданному или существующему элементу.

#для_продвинутых
More from @seniorcpp
  1. Oct 14, 2026Алгоритмы all_of, any_of и none_of Начиная с C ++ 11, в STL C ++ добавляются некоторые нов…
  2. Oct 13, 2026Как написать «Змейку» на C++ в четыре переменные? Пишем классическую «Змейку», как на КДПВ…
  3. Oct 12, 2026Алгоритм set_symmetric_difference Строит отсортированную последовательность из элементов,…
  4. Oct 11, 2026Для чего нужен аллокатор и как создать свой собственный аллокатор? Аллокатор это шаблонный…
  5. Oct 10, 2026Макрос watch Макрос watch — один из самых полезных приёмов. При отладке кода watch(перемен…
  6. Oct 9, 2026init внутри if и switch Эта возможность C++17 мне полюбилась сразу же, как только я узнал…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →