C++ STL中的unordered_multimap emplace_hint()函数
unordered_multimap::emplace_hint() 是C++ STL中的内置函数,用于在unordered_multimap容器中插入新的{key:element}。它从参数提供的位置开始搜索元素的插入点。位置仅作为提示,不决定插入的位置。插入根据容器的标准自动进行,容器的大小增加1。
语法:
unordered_multimap_name.emplace_hint_ (iterator position, key, element)
参数: 函数接受三个必需参数,如下所述:
- position: 它指定指向从哪里开始进行插入的迭代器位置。
- key: 它指定要插入到容器中的键。
- element: 它指定要插入到容器中的元素。
返回值: 它返回指向新插入元素的迭代器。
下面的程序说明了上述函数:
程序1:
// C++ program to illustrate
// unordered_multimap::emplace_hint()
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main()
{
// 声明
unordered_multimap<int, int> sample;
// 在正确的提示下以更快的方式插入键和元素
auto it = sample.emplace_hint(sample.begin(), 1, 2);
it = sample.emplace_hint(it, 1, 2);
it = sample.emplace_hint(it, 1, 3);
//以错误的位置开始的更慢的方法
sample.emplace_hint(sample.begin(), 4, 9);
sample.emplace_hint(sample.begin(), 60, 89);
std::cout << "键和元素:\n";
for (auto it = sample.begin(); it!= sample.end(); it++)
cout << "{" << it->first << ":" << it->second << "}\n ";
std::cout << std::endl;
return 0;
}
输出:
键和元素:
{60:89}
{4:9}
{1:2}
{1:2}
{1:3}
程序2:
// C++ program to illustrate
// unordered_multimap::emplace_hint()
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main()
{
// 声明
unordered_multimap<string, string> sample;
// 以正确的提示方式插入元素
auto it = sample.emplace_hint(sample.begin(), "gopal", "dave");
it = sample.emplace_hint(it, "gopal", "dave");
it = sample.emplace_hint(it, "Geeks", "Website");
// 以错误的位置开始的更慢的方法
sample.emplace_hint(sample.begin(), "Geeks", "STL");
sample.emplace_hint(sample.begin(), "Multimap", "functions");
std::cout << "键和元素:\n";
for (auto it = sample.begin(); it != sample.end(); it++)
cout << "{" << it->first << ":" << it->second << "}\n ";
std::cout << std::endl;
return 0;
}
输出:
键和元素:
{Multimap:functions}
{Geeks:Website}
{Geeks:STL}
{gopal:dave}
{gopal:dave}