FreeBSD Manual Pages
std::multimap::multimap(3) C++ Standard Libary std::multimap::multimap(3) NAME std::multimap::multimap - std::multimap::multimap Synopsis multimap(); (1) explicit multimap( const Compare& comp, (2) const Allocator& alloc = Allocator() ); explicit multimap( const Allocator& alloc ); (3) (since C++11) template< class InputIt > multimap( InputIt first, InputIt last, (4) const Compare& comp = Compare(), const Allocator& alloc = Allocator() ); template< class InputIt > multimap( InputIt first, InputIt last, (5) (since C++14) const Allocator& alloc ); multimap( const multimap& other ); (6) multimap( const multimap& other, const Allocator& alloc ); (7) (since C++11) multimap( multimap&& other ); (8) (since C++11) multimap( multimap&& other, const Allocator& alloc ); (9) (since C++11) multimap( std::initializer_list<value_type> init, const Compare& comp = Compare(), (10) (since C++11) const Allocator& alloc = Allocator() ); multimap( std::initializer_list<value_type> init, (11) (since C++14) const Allocator& ); Constructs new container from a variety of data sources and option- ally using user supplied allocator alloc or comparison function object comp. 1-3) Constructs an empty container. 4-5) Constructs the container with the contents of the range [first, last). 6-7) Copy constructor. Constructs the container with the copy of the contents of other. If alloc is not provided, allocator is obtained by calling (since std::allocator_traits<allocator_type>::select_on_container_copy_con- struction( C++11) other.get_allocator()). The template parameter Allocator is only deduced from the first ar- gument (since while used in class template argument deduction. C++23) 8-9) Move constructor. Constructs the container with the contents of other using move semantics. If alloc is not provided, allocator is obtained by move-construction from the allocator belonging to other. The template parameter Allocator is only deduced from the first (since C++23) argument while used in class template argument deduction. 10-11) Constructs the container with the contents of the initializer list init. Parameters alloc - allocator to use for all memory allocations of this container comp - comparison function object to use for all comparisons of keys first, last - the range to copy the elements from other - another container to be used as source to initialize the elements of the container with init - initializer list to initialize the elements of the container with Type requirements - InputIt must meet the requirements of LegacyInputIterator. - Compare must meet the requirements of Compare. - Allocator must meet the requirements of Allocator. Complexity 1-3) Constant 4-5) N log(N) where N = std::distance(first, last) in general, lin- ear in N if the range is already sorted by value_comp(). 6-7) Linear in size of other 8-9) Constant. If alloc is given and alloc != other.get_allocator(), then linear. 10-11) N log(N) where N = init.size() in general, linear in N if init is already sorted by value_comp(). Exceptions Calls to Allocator::allocate may throw. Notes After container move construction (overload (8-9)), references, pointers, and iterators (other than the end iterator) to other remain valid, but refer to elements that are now in *this. The current standard makes this guarantee via the blanket statement in [container.requirements.general]/12, and a more direct guarantee is under consideration via LWG 2321. Although not formally required until C++23, some implementations has already put the template parameter Allocator into non-deduced contexts in earlier modes. Example // Run this code #include <iostream> #include <map> struct Point { double x, y; }; struct PointCmp { bool operator()(const Point& lhs, const Point& rhs) const { return lhs.x < rhs.x; // NB. ignores y on purpose } }; int main() { std::multimap<int, int> m = {{1,1},{2,2},{3,3},{4,4},{5,5},{4,4},{3,3},{2,2},{1,1}}; for(auto& p: m) std::cout << p.first << ' ' << p.second << '\n'; // custom comparison std::multimap<Point, double, PointCmp> mag{ { {5, 12}, 13 }, { {3, 4}, 5 }, { {8, 15}, 17 }, { {3, -3}, -1 }, }; for(auto p : mag) std::cout << "The magnitude of (" << p.first.x << ", " << p.first.y << ") is " << p.second << '\n'; } Output: 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 The magnitude of (3, 4) is 5 The magnitude of (3, -3) is -1 The magnitude of (5, 12) is 13 The magnitude of (8, 15) is 17 Defect reports The following behavior-changing defect reports were applied retroac- tively to previously published C++ standards. DR Applied to Behavior as published Correct be- havior LWG 2193 C++11 the default constructor is explicit made non-ex- plicit See also operator= assigns values to the container (public member function) http://cppreference.com 2022.07.31 std::multimap::multimap(3)
NAME | Synopsis | Parameters | Type requirements | Complexity | Exceptions | Notes | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::multimap::multimap&sektion=3&manpath=FreeBSD+Ports+15.0>
