unordered_map::insert
將某個項目或項目範圍插入 unordered_map 中。
// (1) single element pair<iterator, bool> insert( const value_type& Val ); // (2) single element, perfect forwarded template<class ValTy> pair<iterator, bool> insert( ValTy&& Val ); // (3) single element with hint iterator insert( const_iterator Where, const value_type& Val ); // (4) single element, perfect forwarded, with hint template<class ValTy> iterator insert( const_iterator Where, ValTy&& Val ); // (5) range template<class InputIterator> void insert( InputIterator First, InputIterator Last ); // (6) initializer list void insert( initializer_list<value_type> IList );
參數
參數 |
描述 |
Val |
除非其中包含了索引鍵已經過對等地排序的項目,否則為要插入 unordered_map 中的項目值。 |
Where |
要開始搜尋正確的插入點的地方。 |
ValTy |
範本參數,指定 unordered_map 可用於建構 value_type 的項目的引數類型,並將 Val 作為引數完美轉送。 |
First |
要複製之第一個項目的位置。 |
Last |
要複製之最後一個項目之後的位置。 |
InputIterator |
範本函式引數,符合輸入迭代器的需求,而迭代器會指向可用於建構 value_type 物件之類型的項目。 |
IList |
要從中複製項目的 initializer_list。 |
傳回值
單一項目成員函式 (1) 和 (2) 會傳回 pair,其中 bool 元件為 True (若執行插入),若 unordered_map 已包含其中索引鍵具有依順序排列的對等值的項目,則為 False。 若 bool 元件為 True,傳回值組的迭代器元件會指向最新插入的項目;若 bool 元件為 False,則會指向現有項目。
具有提示的單一項目成員函式 (3) 及 (4) 會傳回指向位置的迭代器,該位置是新項目插入 unordered_map 中的位置,或者,若對等索引鍵已存在,則指向現有項目。
備註
此函式不會使任何迭代器、指標或參考無效。
在只插入一個項目的期間,若擲出例外狀況,但沒有發生在容器的雜湊函式中,則不會修改容器的狀態。 若雜湊函式中擲回例外狀況,則結果為未定義。 在插入多個項目期間,若擲出例外狀況,則容器會處於未指定但有效的狀態。
若要存取 pair pr 的迭代器元件 (由單一項目成員函式傳回),請使用 pr.first;若要對傳回的 pair 取值,請使用 *pr.first (提供您項目)。 若要存取 bool 元件,請使用 pr.second。 例如,請參閱本文中稍後的範例程式碼。
容器的 value_type 是屬於容器的 typedef,而針對對應,map<K, V>::value_type 是 pair<const K, V>。 項目的值是已排序的組,其中第一個元件等於索引鍵值,而第二個元件等於項目的資料值。
範圍成員函式 (5) 會將項目值的序列插入對應至每個項目的 unordered_map,而這些項目是由範圍 [First, Last) 中的迭代器指定;因此不會插入 Last。 容器成員函式 end() 會參考容器中最後一個項目之後的位置。例如陳述式 m.insert(v.begin(), v.end()); 嘗試將 v 的所有項目插入 m。 只會插入具有範圍中唯一值的項目;若重複則會忽略。 若要觀察哪些項目會遭到拒絕,請使用單一項目版本的 insert。
初始設定式清單成員函式 (6) 使用 initializer_list 將項目複製到 unordered_map。
如需插入就地建構的項目 (換言之即為未執行複製或移動作業),請參閱 unordered_map::emplace 及 unordered_map::emplace_hint。
如需程式碼範例,請參閱map::insert。
需求
標頭:<unordered_map>
命名空間: std