📜  C++17 的映射和无序映射中的 std::try_emplace()

📅  最后修改于: 2021-09-07 02:24:29             🧑  作者: Mango

在本文中,我们将学习 Maps 和 Unordered Maps 中的 try_emplace 方法。这个方法是在C++17(即gcc 9.1)版本中添加的。提议的这个新函数的行为与 emplace() 类似,但有一个优点,即如果键已经存在,它不会构造与键关联的对象。如果创建该类型的对象成本高昂,这将提高性能。

头文件:

#include 

句法:

map_name.try_emplace(key, element);

参数:该函数接受两个强制性参数,如下所述:

  • key:指定要插入到multimap容器中的key。
  • element:它指定要插入到地图容器中的键的元素。

返回值:该函数不返回任何内容。

下面是在 C++ 中说明try_emplace()的程序:

// C++ program for the illustration of
// map::try_emplace() function in map
#include 
using namespace std;
  
// Driver Code
int main()
{
    // Initializing a container
    map m;
  
    // Inserting elements in random order
    m.try_emplace("a", "123");
    m.try_emplace("b", "456");
    m.try_emplace("a", "Won't be inserted");
    m.try_emplace("c", "789");
    m.try_emplace("c", "Won't be inserted");
  
    // Print the elements
    cout << "\nThe map is : \n";
    cout << "KEY\tELEMENT\n";
  
    for (auto p : m) {
        cout << p.first << "\t"
             << p.second
             << endl;
    }
    return 0;
}

输出:

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live