std::unordered_set<Key,Hash,KeyEqual,Allocator>::emplace
出自 cppreference.com
< cpp | container | unordered set
| template< class... Args > std::pair<iterator, bool> emplace( Args&&... args ); |
(C++11 起) | |
若容器中不存在具有該鍵(key)的元素,則使用給定的 args 在容器中原地建構一個新元素。
新元素的建構式會以與傳遞給 emplace 完全相同的引數呼叫,並透過 std::forward<Args>(args)... 進行轉發。即使容器中已存在具有該鍵值的元素,仍可能會建構新元素;若發生此情況,該新建構的元素會立即被銷毀。
小心使用 emplace 可以讓新元素在建構的同時,避免不必要的複製或移動操作。
若運算後的新元素數量大於舊的 max_load_factor() * bucket_count(),則會進行重新雜湊(rehashing)。
若發生再雜湊(因插入導致),所有迭代器將失效。否則(無再雜湊),迭代器不會失效。
目錄 |
[編輯] 參數
| args | - | 轉發給元素建構函數的參數 |
[編輯] 回傳值
一個 pair,其中包含指向所插入元素(或阻止插入之元素)的迭代器,以及一個 bool 值,僅當插入發生時為 true。
[編輯] 例外狀況
若因任何原因拋出例外,此函數無效(強烈例外安全保證)。
[編輯] 複雜度
平均為攤銷常數時間,最壞情況為容器大小的線性時間。
[編輯] 範例
| 本節尚不完整 理由:無範例 |
[編輯] 參見
| 使用提示(hint)原地建構元素 (公開成員函式) | |
| 插入元素 或節點(C++17 起) (公開成員函式) |