STL unordered_multimap emplace

STL unordered_multimap emplace教程

如果我们需要向 STL 中的 unordered_multimap 容器插入元素除了使用 insert 方法插入元素,还可以使用 emplace 方法和 emplace_hint 方法。

实现相同的插入操作,无论是用 emplace() 还是 emplace_hint(),都比 insert() 方法的效率高,和 insert() 方法相比,emplace() 和 emplace_hint() 方法的使用要简单很多,因为它们各自只有一种语法格式。

案例

unordered_multimap emplace插入元素

使用 emplace 给 unordered_multimap 插入元素

#include <iostream> #include <unordered_map> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; //创建并初始化 unordered_multimap 容器 std::unordered_multimap<string, string>myunordered_multimap; //插入键值对 myunordered_multimap.emplace("CPP教程", "https://haicoder.net/cpp/cpp-tutorial.html"); for(auto iter = myunordered_multimap.begin(); iter != myunordered_multimap.end(); ++iter) { cout << iter->first << " " << iter->second << endl; } cout << "==================================================" << endl; //插入新键值对 myunordered_multimap.emplace("C语言教程", "https://haicoder.net/c/c-tutorial.html"); for(auto iter = myunordered_multimap.begin(); iter != myunordered_multimap.end(); ++iter) { cout << iter->first << " " << iter->second << endl; } cout << "==================================================" << endl; myunordered_multimap.emplace("CPP教程", "https://haicoder.net/golang/golang-tutorial.html"); for(auto iter = myunordered_multimap.begin(); iter != myunordered_multimap.end(); ++iter) { cout << iter->first << " " << iter->second << endl; } cout << "==================================================" << endl; return 0; }

因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ unordered_multimap.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

27_unordered_multimap插入元素.png

我们看到,我们使用了 emplace 将元素插入到了 unordered_multimap 中。

unordered_multimap emplace_hint插入元素

使用 emplace_hint 给 unordered_multimap 插入元素

#include <iostream> #include <unordered_map> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; //创建并初始化 unordered_multimap 容器 std::unordered_multimap<string, string>myunordered_multimap; //插入键值对 myunordered_multimap.emplace_hint(myunordered_multimap.begin(), "CPP教程", "https://haicoder.net/cpp/cpp-tutorial.html"); for(auto iter = myunordered_multimap.begin(); iter != myunordered_multimap.end(); ++iter) { cout << iter->first << " " << iter->second << endl; } cout << "==================================================" << endl; //插入新键值对 myunordered_multimap.emplace_hint(myunordered_multimap.begin(), "C语言教程", "https://haicoder.net/c/c-tutorial.html"); for(auto iter = myunordered_multimap.begin(); iter != myunordered_multimap.end(); ++iter) { cout << iter->first << " " << iter->second << endl; } cout << "==================================================" << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

28_unordered_multimap插入元素.png

我们看到,我们使用了 emplace_hint 将元素插入到了 unordered_multimap 中。

STL unordered_multimap emplace总结

无论是用 emplace() 还是 emplace_hint(),都比 insert() 方法的效率高,和 insert() 方法相比,emplace() 和 emplace_hint() 方法的使用要简单很多,因为它们各自只有一种语法格式。