(1) | ||||
| (until C++14) | |||
| (since C++14) | |||
| (1) | (since C++11) | ||
(2) | ||||
| ||||
| (since C++14) | |||
| (3) | |||
| (3) | (since C++11) | ||
| (4) | (since C++11) | ||
| (4) | (since C++11) | ||
(5) | ||||
| (since C++11) | |||
| (since C++14) |
Constructs new container from a variety of data sources and optionally using user supplied allocator alloc
or comparison function object comp
.
1) Default constructor. Constructs empty container.
2) Constructs the container with the contents of the range
[first, last)
. 3) Copy constructor. Constructs the container with the copy of the contents of
other
. If alloc
is not provided, allocator is obtained by calling std::allocator_traits<allocator_type>::select_on_container_copy_construction(other.get_allocator())
. 4) 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
. 5) 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 | ||
- InputIterator must meet the requirements of InputIterator . | ||
- Compare must meet the requirements of Compare . | ||
- Allocator must meet the requirements of Allocator . |
Complexity
1) Constant
2) N log(N) where
N = std::distance(first, last)
in general, linear in N
if the range is already sorted by value_comp()
. 3) Linear in size of
other
4) Constant. If
alloc
is given and alloc != other.get_allocator()
, then linear. 5) N log(N) where
N = init.size())
in general, linear in N
if init
is already sorted by value_comp()
.Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream> #include <string> #include <iomanip> #include <map> template < typename Map> void print_map(Map& m) { std::cout << '{' ; for (auto& p: m) std::cout << p.first << ':' << p.second << ' ' ; std::cout << "}\n" ; } int main() { // (1) Default constructor std::map<std::string, int > map1; map1[ "something" ] = 69; map1[ "anything" ] = 199; map1[ "that thing" ] = 50; std::cout << "map1 = " ; print_map(map1); // (2) Range constructor std::map<std::string, int > iter(map1.find( "anything" ), map1.end()); std::cout << "\niter = " ; print_map(iter); std::cout << "map1 = " ; print_map(map1); // (3) Copy constructor std::map<std::string, int > copied(map1); std::cout << "\ncopied = " ; print_map(copied); std::cout << "map1 = " ; print_map(map1); // (4) Move constructor std::map<std::string, int > moved(std::move(map1)); std::cout << "\nmoved = " ; print_map(moved); std::cout << "map1 = " ; print_map(map1); // (5) Initializer list constructor const std::map<std::string, int > init { { "this" , 100}, { "can" , 100}, { "be" , 100}, { "const" , 100}, }; std::cout << "\ninit = " ; print_map(init); } |
Output:
1 2 3 4 5 6 7 8 9 10 11 12 | map1 = {anything:199 something:69 that thing:50 } iter = {anything:199 something:69 that thing:50 } map1 = {anything:199 something:69 that thing:50 } copied = {anything:199 something:69 that thing:50 } map1 = {anything:199 something:69 that thing:50 } moved = {anything:199 something:69 that thing:50 } map1 = {} init = {be:100 can:100 const :100 this :100 } |
See also
operator=
| assigns values to the container (public member function) |
Please login to continue.