共用方式為


set::emplace

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

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

參數

參數

說明

args

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

傳回值

如果已執行插入,pair 的 bool 元件傳回 true,如果在排序的項目已經包含對應的值 ,傳回 false。 傳回值的 Iterator 元件傳回新元素插入的位址 (如果 bool 元件為 true) 或已放置項目的位址 (如果 bool 元件為 false)。

備註

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

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

範例

// set_emplace.cpp
// compile with: /EHsc
#include <set>
#include <string>
#include <iostream>

using namespace std;

template <typename S> void print(const S& s) {
    cout << s.size() << " elements: ";

    for (const auto& p : s) {
        cout << "(" << p << ") ";
    }

    cout << endl;
}

int main()
{
    set<string> s1;

    auto ret = s1.emplace("ten");

    if (!ret.second){
        cout << "Emplace failed, element with value \"ten\" already exists."
            << endl << "  The existing element is (" << *ret.first << ")"
            << endl;
        cout << "set not modified" << endl;
    }
    else{
        cout << "set modified, now contains ";
        print(s1);
    }
    cout << endl;

    ret = s1.emplace("ten");

    if (!ret.second){
        cout << "Emplace failed, element with value \"ten\" already exists."
            << endl << "  The existing element is (" << *ret.first << ")"
            << endl;
    }
    else{
        cout << "set modified, now contains ";
        print(s1);
    }
    cout << endl;
}

Output

set modified, now contains 1 elements: (ten)

Emplace failed, element with value "ten" already exists.
  The existing element is (ten)

需求

標頭: <set>

命名空間: std

請參閱

參考

<set>

set 類別

標準樣板程式庫