std::multimap::emplace(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… std::multimap::emplace(3) πŸ’…

okay bestie, welcome to the C++ Standard Libary manual β€” yes, that's literally the manual name here, and we're keeping it, no cap. This page is all about std::multimap::emplace, and it's lowkey iconic for constructing stuff directly in place. ✨

πŸŽ€ NAME πŸŽ€

std::multimap::emplace - std::multimap::emplace

🌈 Synopsis 🌈

template< class... Args >            (since C++11)
iterator emplace( Args&&... args );

Inserts a new element into the container constructed in-place with the given args. 🫢

The constructor of the new element (i.e. std::pair<const Key, T>) is called with exactly the same arguments as supplied to emplace, forwarded via std::forward<Args>(args)....

Careful use of emplace allows the new element to be constructed while avoiding unnecessary copy or move operations. literally efficiency main character energy. πŸ’…

No iterators or references are invalidated. ngl, that part ate. πŸ“

🌸 Parameters 🌸

  • args β€” arguments to forward to the constructor of the element.

πŸ’– Return value πŸ’–

An iterator to the inserted element.

πŸ”₯ Exceptions πŸ”₯

If an exception is thrown for any reason, this function has no effect (strong exception safety guarantee).

πŸ“ˆ Complexity πŸ“ˆ

Logarithmic in the size of the container.

πŸ¦‹ Example πŸ¦‹

okay so here's the code, run it and watch the multimap do its thing:

// Run this code

#include <iostream>
#include <string>
#include <utility>
#include <map>

int main()
{
    std::multimap<std::string, std::string> m;

    // uses pair's move constructor
    m.emplace(std::make_pair(std::string("a"), std::string("a")));

    // uses pair's converting move constructor
    m.emplace(std::make_pair("b", "abcd"));

    // uses pair's template constructor
    m.emplace("d", "ddd");

    // emplace with duplicate key
    m.emplace("d", "DDD");

    // uses pair's piecewise constructor
    m.emplace(std::piecewise_construct,
              std::forward_as_tuple("c"),
              std::forward_as_tuple(10, 'c'));

    for (const auto& p : m)
        std::cout << p.first << " => " << p.second << '\n';
}

πŸ“ Output: πŸ“

a => a
b => abcd
c => cccccccccc
d => ddd
d => DDD

πŸ‘€ See also πŸ‘€

  • emplace_hint β€” constructs elements in-place using a hint (C++11) (public member function)
  • try_emplace β€” inserts in-place if the key does not exist, does nothing if the key exists (public member function)
  • insert β€” inserts elements or nodes (since C++17) (public member function)

and that's the whole page, bestie! 🫢 source: http://cppreference.com Β· version/date: 2024.06.10 Β· page: std::multimap::emplace(3) β€” bye! πŸ’–

πŸ“¦ where this page comes from