C++ STL ``unordered_map emplace_hint()`` 函数用法与示例详解


发布日期 : 2019-09-22 00:10:16 UTC

访问量: 9 次浏览

在C++ STL中使用 unordered\_map emplace\_hint()函数

unordered_map::emplace_hint()是C++ STL中的内置函数,它用给定的提示将键及其元素插入到unordered_map容器中。
它有效地将容器大小增加了一个,因为unordered_map是存储带有元素值的键的容器。
提供的提示不会影响要输入的位置,它仅增加了插入的速度,因为它指向从哪里开始查找排序的位置。
它按照容器遵循的相同顺序插入。它的工作方式类似于unordered_map::emplace()函数,但是如果用户提供了精确的位置,则有时比它更快。
如果键已经存在于地图容器中,则不插入该键和元素,因为地图只存储独特的键。

语法:

unordered_map_name.emplace_hint(position, key, element)

参数:

  • position指定要从哪里开始搜索排序操作,从而使插入更快。
  • key指定要插入到unordered_map容器中的键。
  • element指定要插入到unordered_map容器中的键的元素。

返回类型:此函数返回一个指向插入元素(或已存在的元素)的迭代器。

时间复杂度:在最坏情况下为O(n)。以下程序说明了emplace_hint()方法:

示例1:

// C++程序演示unordered_map::emplace_hint()函数
#include <bits/stdc++.h>
using namespace std;

int main()
{

    //初始化容器
    unordered_map<int, int> mp;

    //以任意顺序插入元素
    mp.emplace_hint(mp.begin(), 2, 30);
    mp.emplace_hint(mp.begin(), 1, 40);
    mp.emplace_hint(mp.begin(), 3, 60);

    //打印元素
    cout << "\n unordered_map是:\n";
    cout << "键\t元素\n";
    for (auto itr = mp.begin(); itr != mp.end(); itr++)
        cout << itr->first << "\t"
             << itr->second << endl;

    return 0;
}

输出:

unordered_map是:
键   元素
3   60
2   30
1   40

示例2

// C++程序演示unordered_map::emplace_hint()函数

#include <bits/stdc++.h>
using namespace std;

int main()
{

    //初始化容器
    unordered_map<char, int> mp;

    //以任意顺序插入元素
    mp.emplace_hint(mp.begin(), 'b', 30);
    mp.emplace_hint(mp.begin(), 'a', 40);
    mp.emplace_hint(mp.begin(), 'c', 60);

    //打印元素
    cout << "\n unordered_map是:\n";
    cout << "键\t元素\n";
    for (auto itr = mp.begin(); itr != mp.end(); itr++)
        cout << itr->first << "\t"
             << itr->second << endl;

    return 0;
}

输出:

unordered_map是:
键   元素
c   60
b    30
a    40