map是stl的乙個關聯容器,它的特點是增加和刪除節點對迭代器的影響很小,除了那個操作節點,對其他的節點都沒有什麼影響。對於迭代器來說,可以修改實值,而不能修改key。它提供一對一(其中第乙個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值)的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。這裡說下map內部資料的組織,map內部自建一顆紅黑樹(一種非嚴格意義上的平衡二叉樹),這顆樹具有對資料自動排序的功能,所以在map內部所有的資料都是有序的,後邊我們會見識到有序的好處。
(1) 預設構造: mapm; 構造乙個空的map,注意,必要時要給出模板引數中的 compare。需要時給出 alloc
(2) 範圍構造: mapm(iterator first, iteratorlast); 將迭代器[frist, last)範圍內的元素填入map中
(3) 拷貝構造: mapm(cosnt map& m2); 用m2構造m
(4) 初始化列表構造: mapm(initializer_listil)
由於map 的 value_type 是 pair型別,所以要構造成pair作為列表,這是三種構造 pair的方式
mapm,, ...} // 通過 {}構造 pair
mapm // 通過make_pair() 函式構造 pair
mapm // 通過型別轉換構造pair
begin() 返回指向map頭部的迭代器
clear() 刪除所有元素
count() 返回指定元素出現的次數
empty() 如果map為空則返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊條目的迭代器對
erase() 刪除乙個元素
find() 查詢乙個元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比較元素key的函式
lower_bound() 返回鍵值》=給定元素的第乙個位置
max_size() 返回可以容納的最大元素個數
rbegin() 返回乙個指向map尾部的逆向迭代器
rend() 返回乙個指向map頭部的逆向迭代器
size() 返回map中元素的個數
swap() 交換兩個map
upper_bound() 返回鍵值》給定元素的第乙個位置
value_comp() 返回比較元素value的函式
這裡我們著重講解erase函式
erase刪除的是迭代器指向的資料。//測試erase函式
map::iterator it2 = mymap.begin();
while(it2 != mymap.end())
it2++;
}print(mymap);
還有find函式,函式原型是iterator find (const key_type& k); 返回值要用迭代器iterator接收
**如下:
//測試find函式 函式原型 iterator find (const key_type& k); 返回值用迭代器接收
map::iterator it1 = mymap.find(1);
cout << "返回元素" << it1->second << endl;
執行結果為#include #include using namespace std;
//抽象乙個print函式,用來列印map中的值
void print(mapmymap)
}int main()
//以下**用來測試map的相關函式
/*mymap.clear(); //用來清除map中的所有元素
cout << "呼叫clear函式之後map的大小" << mymap.size() << endl;
*///測試find函式 函式原型 iterator find (const key_type& k); 返回值用迭代器接收
map::iterator it1 = mymap.find(1);
cout << "返回元素" << it1->second << endl;
//測試erase函式
map::iterator it2 = mymap.begin();
while(it2 != mymap.end())
it2++;
}print(mymap);
return 0;
}
c STL庫容器之向量vector
vector向量是一種順序行容器。相當於陣列,但其大小可以不預先指定,並且自動擴充套件。它可以像陣列一樣被操作,由於它的特性我們完全可以將vector 看作動態陣列。在建立乙個vector 後,它會自動在記憶體中分配一塊連續的記憶體空間進行資料儲存,初始的空間大小可以預先指定也可以由vector 預...
c STL庫容器之集合set
set是stl中一種標準關聯容器,其鍵值就是實值,實值就是鍵值,不可以有重複,所以我們不能通過set的迭代器來改變set的元素的值。它底層使用平衡的搜尋樹 紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。set,顧名思義是 集合 的意思,在set中元...
c STL容器之map容器
1.map中所有的元素都是pair 2.pair元素中第乙個元素為key,第二個元素為value 3.所有元素都會根據鍵值自動排序 4.map中不允許有重複的鍵,multimap中允許有重複的鍵 優點 可以根據key快速的找到value 一 建構函式 mapmp map const map mp 二...