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