在C++的STL庫中,有許多種不同結構、不同用途的容器。容器又可以分為兩大類,分別是:
序列式容器(sequence containers)關聯式容器(associative containers)其中序列式容器包括vector、queue和list等,本文中的map和set屬于關聯式容器。 先說說set容器,set的特性是,所有的元素再插入的時候都會根據元素的鍵值來排序。(默認為升序,需要時可以傳入模板參數改為降序排序)。set元素的鍵值就是實值,實值就是鍵值,所以set中的值不能修改,只能做插入和刪除的操作。set不允許兩個元素有相同的鍵值。 set的底層實現是紅黑樹,所以set容器的效率非常高。
set常用成員有(具體用法見SetTest())
1. 迭代器(前向/反向/const迭代器)2. Insert a. 直接插入一個值(返回pair <K,V>)first->元素位置 second->成功標志 b. 在某位置插入 c. 插入一個區間3. Erase a. 刪除一個有效迭代器所指的位置,否則assert b. 刪除一個值 未找到不報錯, 找到即刪除 c. 刪除一個迭代器區間的值4. Swap5. Clear6. Emplace——構造插入,比insert效率高(C++11)7. Find8. count——常用于快速判斷一個元素是否存在容器map的特性是,所有元素都會根據元素的鍵值自動排序。map的所有元素都是pair,同時擁有實值和鍵值。pair的第一元素被視為鍵值,第二元素被視為實值。map同樣不允許有兩個元素擁有相同的鍵值,也不能修改元素的鍵值,不過實值可以修改。map與set相似的是底層也是map容器實現。
map常用成員(測試用例見MapTest)
1. Insert a. 插入一個pair<Key,Value>() 2. Operator[] a. 以K值為參數,返回V值引用
運行結果
新聞熱點
疑難解答
圖片精選