C++ unordered_multimap::emplace() 函式



C++ 的std::unordered_multimap::emplace()函式用於插入新元素,並將容器大小擴充套件一個。

如果同一個鍵被多次放置,那麼unordered_multimap會儲存每個鍵或值,因為unordered_multimap是一個儲存相同值的多重鍵或重複鍵的容器。

語法

以下是std::unordered_multimap::emplace()函式的語法。

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

引數

  • args − 用於轉發到元素建構函式的引數。

返回值

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

示例 1

讓我們看下面的例子,我們將演示unordered_multimap::emplace()函式的使用。

#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新增更多鍵和值。

#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()函式更改已存在鍵的值。

#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
廣告