C++ multimap insert()函数
多重映射的C++ insert()函数被用于将一个元素或元素范围插入到多重映射中。
语法
single element (1) pair<iterator,bool> insert (const value_type& val); //until C++ 11
hint (2) iterator insert (iterator position, const value_type& val); //until C++ 11
range (3) template <class InputIterator>
void insert (InputIterator first, InputIterator last); //until C++ 11
single element (1) pair<iterator,bool> insert (const value_type& val);
template <class P> pair<iterator,bool> insert (P&& val); //since C++ 11
hint (2) iterator insert (const_iterator position, const value_type& val);
template <class P> iterator insert (const_iterator position, P&& val);
range (3) template <class InputIterator>
void insert (InputIterator first, InputIterator last); //since C++ 11
initializer list (4) void insert (initializer_list<value_type> il); //since C++ 11
参数
val : 要插入到multimap中的键值。
position : 提示要插入元素的位置。
first : 要插入的范围的起始位置。
last : 要插入的范围的结束位置。
il : 初始化列表。
返回值
如果插入单个元素,则返回指向插入到multimap的新元素位置的迭代器。
或者如果使用提示插入元素,则返回指向插入到multimap的新元素位置的迭代器。
复杂度
- 如果插入单个元素,则复杂度将是对数级的。
- 如果给出提示并且给定的位置是最佳位置,则复杂度将是摊销常数。
迭代器有效性
没有变化。
数据竞争
容器被修改。
异常安全
该函数不会抛出异常。
示例1
让我们看一个简单的示例,将元素插入到multimap中:
#include <iostream>
#include <map>
using namespace std;
int main() {
multimap<char, int> m = {
{'a', 1},
{'b', 2},
{'c', 3},
};
// inserting new element
m.insert(pair<char, int>('b', 4));
m.insert(pair<char, int>('c', 5));
cout << "Multimap contains following elements" << endl;
for (auto it = m.begin(); it != m.end(); ++it)
cout << it->first << " = " << it->second << endl;
return 0;
}
输出:
Multimap contains following elements
a = 1
b = 2
b = 3
c = 4
c = 5
在上面的示例中,它只是插入具有给定键值对的元素。
示例2
让我们看一个简单的示例,在指定的位置插入元素:
#include <iostream>
#include <map>
using namespace std;
int main(void) {
multimap<char, int> m = {
{'b', 2},
{'c', 3},
{'d', 4},
};
//inserting element with the given position
m.insert(m.begin(), pair<char, int>('a', 1));
m.insert(m.end(), pair<char, int>('d', 5));
cout << "Multimap contains following elements" << endl;
for (auto it = m.begin(); it != m.end(); ++it)
cout << it->first << " = " << it->second << endl;
return 0;
}
输出:
Multimap contains following elements
a = 1
b = 2
c = 3
d = 4
d = 5
在上面的示例中,元素按照指定的位置插入,即在begin元素中插入了{‘a’,1},在end元素中插入了{‘d’,5}。
示例3
让我们看一个简单的示例,将一个multimap的元素插入到另一个multimap中:
#include <iostream>
#include <map>
using namespace std;
int main() {
multimap<char, int> m1 = {
{'a', 1},
{'b', 2},
{'a', 3},
{'d', 4},
{'b', 5},
};
multimap<char, int> m2; // creating new multimap m2
m2.insert(m1.begin(), m1.end()); //inserting the elements of m1 to m2 from begin to end
cout << "Multimap contains following elements" << endl;
for (auto it = m2.begin(); it != m2.end(); ++it)
cout << it->first << " = " << it->second << endl;
return 0;
}
输出:
Multimap contains following elements
a = 1
a = 3
b = 2
b = 5
d = 4
在上面的示例中,multimap m1具有五个元素,multimap m2为空。 insert()被用来将m1的元素从m1的开始到结束插入到m2中,并显示m2 multimap的内容。
示例4
让我们看一个简单的插入元素的示例:
#include <iostream>
#include <map>
using namespace std;
int main() {
multimap<int , string> m = {
{1, "Java"},
{2, "C++"},
{3, "SQL"},
};
m.insert({{4,"VB"}, {3, "Oracle"}});
cout << "Multimap contains following elements" << endl;
for (auto it = m.begin(); it != m.end(); ++it)
cout << it->first << " : " << it->second << endl;
return 0;
}
输出:
Multimap contains following elements
1 : Java
2 : C++
3 : SQL
3 : Oracle
4 : VB
在上面的示例中,使用另一种形式的insert()函数将元素插入到multimap中。