C++ unordered_multimap::emplace() 函数



C++ 的std::unordered_multimap::emplace()函数用于插入新元素,并将容器大小扩展一个。

如果同一个键被多次放置,那么unordered_multimap会存储每个键或值,因为unordered_multimap是一个存储相同值的多重键或重复键的容器。

语法

以下是std::unordered_multimap::emplace()函数的语法。

iterator emplace(Args&&... args );

参数

  • args − 用于转发到元素构造函数的参数。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

返回值

此函数返回指向新插入元素的迭代器。

示例 1

让我们看下面的例子,我们将演示unordered_multimap::emplace()函数的使用。

Open Compiler
#include <iostream> #include <unordered_map> using namespace std; int main(void) { unordered_multimap<char, int> umm = { {'a', 1}, {'b', 2}, {'c', 3}, {'d', 4}, {'e', 5} }; umm.emplace('b', 2); umm.emplace('c', 3); cout << "unordered multimap contains following elements" << endl; for (auto it = umm.begin(); it != umm.end(); ++it) cout << it->first << " = " << it->second << endl; return 0; }

输出

如果我们运行以上代码,它将生成以下输出:

unordered multimap contains following elements
a = 1
b = 2
b = 2
c = 3
c = 3
d = 4
e = 5

示例 2

在下面的例子中,我们将向unordered_multimap添加更多键和值。

Open Compiler
#include <iostream> #include <unordered_map> using namespace std; int main(void) { unordered_multimap<string, int> umm = {{"Aman", 490},{"Vivek", 485},{"Akash", 500},{"Sonam", 450}}; cout << "Unordered multimap contains following elements before" << endl; for (auto it = umm.begin(); it != umm.end(); ++it) cout << it->first << " = " << it->second << endl; cout<<"after use of the emplace function \n"; umm.emplace("Sarika", 440); umm.emplace("Sonam", 480); cout << "Unordered multimap contains following elements" << endl; for (auto it = umm.begin(); it != umm.end(); ++it) cout << it->first << " = " << it->second << endl; return 0; }

输出

以下是上述代码的输出:

unordered multimap contains following elements before
Akash = 500
Vivek = 485
Sonam = 450
Aman = 490
after use of the emplace function 
Unordered multimap contains following elements
Aman = 490
Sonam = 480
Sonam = 450
Vivek = 485
Akash = 500
Sarika = 440

示例 3

考虑下面的例子,我们将尝试使用emplace()函数更改已存在键的值。

Open Compiler
#include <iostream> #include <unordered_map> using namespace std; int main(void) { unordered_multimap<int, int> umm = {{10, 100},{20, 200},{30, 300},{40, 400}}; cout << "Unordered map contains following elements before usages of emplace" << endl; for (auto it = umm.begin(); it != umm.end(); ++it) cout << it->first << " = " << it->second << endl; umm.emplace(20, 440); umm.emplace(30, 460); cout << "Unordered map contains same elements after the usages of emplace() function" << endl; for (auto it = umm.begin(); it != umm.end(); ++it) cout << it->first << " = " << it->second << endl; return 0; }

输出

以上代码的输出如下:

Unordered map contains following elements before usages of emplace
40 = 400
30 = 300
20 = 200
10 = 100
Unordered map contains same elements after the usages of emplace() function
10 = 100
20 = 440
20 = 200
30 = 460
30 = 300
40 = 400
广告