一、在介紹set和map之前,我們首先來簡單了解一下序列式容器和關聯式容器 1、序列式容器 序列式容器包括:數組,Vector,list,stack,queue,heap,PRiority-queue。這些容器存放的內容為value,數據的排放是一種線性結構。 2、關聯式容器 關聯式容器包括:set,map,multiset,multimap,hashtable,hash_set,hash_map,hash_multiset,hash_multimap。這些容器存放的內容為key-value,容器的內部會根據唯一的key來定位value。 二、關于set 1、概念 set是關聯式容器,內部結構是紅黑樹,可用來存儲同一類型的數據結構,set有以下幾個特點: (1)、set能從一個數據集合中取出數據,set中每個元素都是唯一的; (2)、默認情況下對元素進行升序排列; (3)、set中元素的值不能直接被改變; (4)、插入刪除時的效率較高,因為操作時只需要指針操作節點即可,不需要對內存進行操作。 2、set一些常見的用法 (1)、begin(),返回set容器中的第一個元素 示例如下:
#include<iostream>#include<set>using namespace std;int main(){ int arr[] = { 3, 5, 7, 1, 6, 9, 0 }; set<int> myset(arr,arr+7); set<int>::iterator it1 = myset.begin(); while (it1 != myset.end()) { cout << " " << *it1; it1++; } return 0;}上面這段代碼的運行結果為:0 1 3 5 6 7 9 由此可見,set容器中的元素默認為升序排列。 (2)、end(),返回set容器中的最后一個元素。 (3)、rbegin(),返回set容器中最后一個元素。 (4)、rend(),返回set容器中第一個元素。 (5)、empty(),判斷容器是否為空。 (6)、size(),返回當前set容器中的元素個數。 (7)、clear(),清空set容器。 (8)、insert(),向set容器中插入元素。 (9)、erase(),刪除set容器中指定的元素。 (10)、find(),查找set中指定值的元素。 (11)、count(),查找set中某個值出現的次數,由于set中的每個元素都是唯一的,因此它的作用實際上是判斷某個值是否存在于set中。 三、關于map 1、概念 map也是一種關聯容器,內部結構為紅黑樹,存儲相結合成的一個關鍵值和映射值的元素(即key-value類型的元素),其特點如下: (1)、map中任何兩個元素沒有相同的key值; (2)、map容器中的元素是有序排列的。 2、map的一些常見用法 (1)、begin(),返回map容器中的第一個元素。 (2)、end(),返回map容器中的最后一個元素。 (3)、rbegin(),返回map容器中最后一個元素。 (4)、rend(),返回map容器中第一個元素。 (5)、empty(),判斷容器是否為空。 (6)、size(),返回當前map容器中的元素個數。 (7)、clear(),清空map容器。 (8)、insert(),向map容器中插入元素。 (9)、erase(),刪除map容器中指定的元素。 (10)、find(),查找map中指定值的元素。 (11)、count(),查找map中某個值出現的次數。 未完待續~~
新聞熱點
疑難解答