共用方式為


map::emplace

插入就地建構的項目 (複製或移動作業未執行) 進入對應。

template<class... Args>
   pair<iterator, bool> emplace(
      Args&&... args);

參數

參數

說明

args

建構項目的引數轉送會插入對應,除非已經包含值相當於已排序的項目。

傳回值

bool 元件的 如果已插入則為 true ,如果對應在 Collation 已經包含了對等值的項目則為 false。 回傳值值組的迭代器元件在 bool 值為 True 時指向新輸入的元素,而當其 bool 值為 False 時,則指向現有的元素。

若要存取 pair pr的 Iterator 元件,請使用 pr.first;若要解除參考它,請使用 *pr.first。 若要存取 bool 元件,請使用 pr.second。 如需範例,請參閱在本文之後的範例程式。

備註

任何迭代器、指標或是參考皆可使用此函式。

在當地語系化期間,除非擲回例外狀況,容器的狀態不會被修改。

項目的 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: ";

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

    cout << endl;
}

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

    auto ret = m1.emplace(10, "ten");

    if (!ret.second){
        auto pr = *ret.first;
        cout << "Emplace failed, element with key 10 already exists."
            << endl << "  The existing element is (" << pr.first << ", " << pr.second << ")"
            << endl;
        cout << "map not modified" << endl;
    }
    else{
        cout << "map modified, now contains ";
        print(m1);
    }
    cout << endl;

    ret = m1.emplace(10, "one zero");

    if (!ret.second){
        auto pr = *ret.first;
        cout << "Emplace failed, element with key 10 already exists."
            << endl << "  The existing element is (" << pr.first << ", " << pr.second << ")"
            << endl;
    }
    else{
        cout << "map modified, now contains ";
        print(m1);
    }
    cout << endl;
}

Output

map modified, now contains 1 elements: (10, ten)

Emplace failed, element with key 10 already exists.
  The existing element is (10, ten)

需求

標頭:<map>

命名空間: std

請參閱

參考

<map>

map 類別

標準樣板程式庫