一、std::map和std::mapinsert函數簡介
std::map是C++ STL(Standard Template Library)中的一個容器類模板,它用於以鍵值對的方式存儲數據,允許使用鍵來訪問值,它是一個元素無序的集合類模板。而std::mapinsert函數是std::map中的一個關鍵函數,用於向std::map容器中插入元素。
// std::mapinsert函數定義 std::pair insert(const value_type& val); std::pair insert(value_type&& val); iterator insert(const_iterator hint, const value_type& val); iterator insert(const_iterator hint, value_type&& val); template void insert(InputIterator first, InputIterator last); void insert(std::initializer_list il);
std::mapinsert函數可接受不同類型的參數,包括一個值對、一個左值或右值,還支持插入一段範圍內的值對。其中std::pair是返回類型,iterator表示插入位置,bool表示是否插入成功。
二、std::mapinsert函數的使用方法
1、通過std::make_pair插入值對
使用std::make_pair函數可以將兩個值合併成一個值對,然後使用insert函數將值對插入到std::map容器中。
#include #include
輸出結果:
1 : one 2 : two 3 : three
2、直接使用值對插入
可以直接使用std::mapinsert函數將一個鍵值對插入std::map容器中。
#include #include
輸出結果:
1 : one 2 : two 3 : three
3、使用emplace插入值對
使用std::map的emplace函數可以將鍵和值組裝成一個值對,直接插入到std::map容器中。
#include #include
輸出結果:
1 : one 2 : two 3 : three
4、使用insert插入多個值對
使用std::mapinsert函數可以批量插入多個值對。
#include #include
輸出結果:
1 : one 2 : two 3 : three
三、std::mapinsert函數的相關注意點
1、插入的鍵值對必須唯一
std::mapinsert函數插入的鍵值對必須是唯一的,否則舊值將被新值替換,或者插入失敗。
#include #include
輸出結果:
1 : one 2 : new two 3 : three
2、使用std::mapinsert函數時,插入操作的時間複雜度為O(log N)
由於std::map採用了紅黑樹(一種自平衡的二叉查找樹)來存儲數據,因此插入操作的時間複雜度為O(log N)。
3、使用std::mapinsert插入元素時,會自動排序
由於std::map採用紅黑樹存儲數據,它會自動對插入的元素進行排序,因此每次訪問std::map時,訪問順序都是有序的。
四、總結
std::mapinsert函數是std::map容器的關鍵函數,它可以很方便地將鍵值對插入到std::map容器中。使用std::make_pair、直接使用pair、emplace等方法插入值對都是可以的,同時需要注意插入的鍵值對必須唯一且插入操作的時間複雜度為O(log N)。
原創文章,作者:GDZC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144735.html