unordered_set::insert
加入項目。
std::pair<iterator, bool> insert(const value_type& val);
iterator insert(iterator where, const value_type& val);
template<class InIt>
void insert(InIt first, InIt last);
template<class ValTy>
pair<iterator, bool> insert(ValTy&& val);
template<class ValTy>
iterator insert(const_iterator where, ValTy&& val);
參數
參數 |
描述 |
InIt |
列舉型別。 |
ValTy |
就地建構函式引數的型別。 |
first |
插入範圍的開頭。 |
last |
插入範圍的結尾。 |
val |
要插入的值。 |
where |
其中的外掛程式的容器 (僅限檔案)。 |
備註
第 10% 成員函式來判斷項目 X 是否存在之索引鍵與相等排序至該 val的序列。 否則,會建立這類項目 X 並使用將它初始化 val。 函式會判斷指定的 XIterator where 。 如果插入之後,函式會傳回 std::pair(where, true)。 否則,會傳回 std::pair(where, false)。
第二 + 成成員函式傳回 insert(val).first,使用 where 做為在受控制序列中的起始位置搜尋插入點。 (插入可能有些快速地,可能會發生,如果插入點緊接在或之後 where之前)。
第三 + 成成員函式會呼叫 insert(*where)插入項目值序列,範圍 [first, last)的每 where 的,否則為。
最後兩個成員函式一般作業的前兩個相同,但是有一點例外,就是 val 用來建構要插入的值。
如果例外狀況在單一項目的插入擲回時,容器會維持不變,而且會重新擲回例外狀況。 如果例外狀況在多個項目的外掛程式時,所擲回的子穩定保留,但未指定的狀態和會重新擲回例外狀況。
範例
// std_tr1__unordered_set__unordered_set_insert.cpp
// compile with: /EHsc
#include <unordered_set>
#include <iostream>
#include <string>
typedef std::unordered_set<char> Myset;
int main()
{
Myset c1;
c1.insert('a');
c1.insert('b');
c1.insert('c');
// display contents " [c] [b] [a]"
for (Myset::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << *it << "]";
std::cout << std::endl;
// insert with hint and reinspect
Myset::iterator it2 = c1.insert(c1.begin(), 'd');
for (Myset::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << *it << "]";
std::cout << std::endl;
// insert range and inspect
Myset c2;
c2.insert(c1.begin(), c1.end());
for (Myset::const_iterator it = c2.begin();
it != c2.end(); ++it)
std::cout << " [" << *it << "]";
std::cout << std::endl;
// insert with checking and reinspect
std::pair<Myset::iterator, bool> pib =
c1.insert('e');
std::cout << "insert(['a',]) success == "
<< std::boolalpha << pib.second << std::endl;
pib = c1.insert('a');
std::cout << "insert(['a',]) success == "
<< std::boolalpha << pib.second << std::endl;
for (Myset::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << *it << "]";
std::cout << std::endl;
// The templatized versions move constructing elements
unordered_set<string> c3, c4;
string str1("a"), str2("b");
c3.insert(move(str1));
cout << "After the move insertion, c3 contains: "
<< *c3.begin() << endl;
c4.insert(c4.begin(), move(str2));
cout << "After the move insertion, c4 contains: "
<< *c4.begin() << endl;
return (0);
}
需求
標題: <unordered_set>
命名空間: std