map::emplace_hint

在适当的位置插入构造的元素(不执行复制或移动操作),附带位置提示。

template<class... Args>
   iterator emplace_hint(
      const_iterator where,
      Args&&... args);

参数

参数

说明

args

参数指向构造将要插入映射的元素,除非映射已包含该元素或,更普遍地,除非它已经包含键相同地排序的元素。

where

开始搜索正确的插入点的位置。(假如点突然超出where,插入将发生在常量级时间内而不出逻辑时间内)。

返回值

指向新插入元素的迭代器。

如果失败的插入,因为该元素已经存在,则返回存在存在带关键字值的元素的迭代器。

备注

没有迭代器或通过此函数的引用是无效的。

在建立期间,如果抛出了异常,容器的状态将不会被修改。

value_type 一个元素是一对, 使元素值为一个有序对,第一个组件与键值相同和第二组件与元素数据值相同。

示例

// map_emplace.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>

using namespace std;

template <typename M> void print(const M& m) {
    cout << m.size() << " elements: " << endl;

    for (const auto& p : m) {
        cout << "(" << p.first <<  "," << p.second << ") ";
    }

    cout << endl;
}

int main()
{
    map<string, string> m1;

    // Emplace some test data
    m1.emplace("Anna", "Accounting");
    m1.emplace("Bob", "Accounting");
    m1.emplace("Carmine", "Engineering");

    cout << "map starting data: ";
    print(m1);
    cout << endl;

    // Emplace with hint
    // m1.end() should be the "next" element after this emplacement
    m1.emplace_hint(m1.end(), "Doug", "Engineering");

    cout << "map modified, now contains ";
    print(m1);
    cout << endl;
}

Output

map starting data: 3 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering)

map modified, now contains 4 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering) (Doug,Engineering)

要求

标头: <map>

命名空间: std

请参见

参考

<map>

map 类

标准模板库