c++的標準模板庫(
簡稱stl)是乙個容器和演算法的類庫。容器往往包含同一型別的資料。
set是一種關聯式容器,其特性如下:
定義乙個元素為整數的集合a,可以用
seta;
基本操作:
對集合a中元素的有
插入元素:a.insert(1);
刪除元素(如果存在):a.erase(1);
判斷元素是否屬於集合:if (a.find(1) != a.end()) ...
返回集合元素的個數:a.size()
將集合清為空集:a.clear()
中序遍歷:類似vector遍歷(用迭代器)
反向遍歷:利用反向迭代器reverse_iterator:
sets; set::reverse_iterator rit; for(rit=s.rbegin();rit!=s.rend();rit++)
元素的刪除:s.erase(2); s.clear();
元素的檢索:find(),若找到,返回該值迭代器的位置,否則返回最後乙個元素後面乙個位置s.end()
it=s.find(5); if(it==s.end()) cout<<"not find"<
map:一樣是關聯式容器,它們的底層容器都是紅黑樹,區別就在於map的值不作為鍵,鍵和值是分開的。它的特性如下:
在map中,乙個鍵對應乙個值,其中鍵不允許重複,不允許修改,但是鍵對應的值是可以修改的。
map基本操作:
資料的插入:
在構造map容器後,我們就可以往裡面插入資料了。這裡講三種插入資料的方法:
第一種:用insert函式插入pair資料
mapmapstudent;
mapstudent.insert(pair(1, 「student_one」));
第二種:用insert函式插入value_type資料
mapmapstudent;
mapstudent.insert(map::value_type (1, 「student_one」));
第三種:用陣列方式插入資料
mapmapstudent;
mapstudent[1] =
「student_one」;
mapstudent[2] = 「student_two」;
在往map裡面插入了資料,我們怎麼知道當前已經插入了多少資料呢,可以用size函式:
int nsize = mapstudent.size();
資料的查詢(包括判定這個關鍵字是否在map中出現):
這裡給出三種資料查詢方法
第一種:用count函式來判定關鍵字是否出現,但是無法定位資料出現位置
第二種:用find函式來定位資料出現位置它返回的乙個迭代器,
當資料出現時,它返回資料所在位置的迭代器,如果map中沒有要查詢的資料,它返回的迭代器等於end函式返回的迭代器
int main()
else
} cout<<」do not find」<
資料的遍歷:
第一種:應用前向迭代器
map::iterator iter;
for(iter = mapstudent.begin(); iter != mapstudent.end(); iter++)
cout」第二種:應用反相迭代器
map::reverse_iterator iter;
for(iter = mapstudent.rbegin(); iter != mapstudent.rend(); iter++)
cout」第三種:用陣列方式
int nsize = mapstudent.size()
for(int nindex = 1; nindex <= nsize; nindex++)
cout<
資料的清空與判空:
清空map中的資料可以用clear()函式,判定map中是否有資料可以用empty()函式,它返回true則說明是空map
7. 資料的刪除
這裡要用到erase函式,它有三個過載了的函式
迭代器刪除
iter = mapstudent.find(1);
mapstudent.erase(iter);
用關鍵字刪除
int n = mapstudent.erase(1);//如果刪除了會返回1,否則返回0
用迭代器,成片的刪除
一下**把整個map清空
mapstudent.earse(mapstudent.begin(), mapstudent.end());
//成片刪除要注意的是,也是stl的特性,刪除區間是乙個前閉後開的集合
8. 其他一些函式用法
STL關聯容器之map
map和set一樣,也是一種關聯容器,內部也是使用紅黑樹作為底層的實現結構。但是不同的是,map的鍵值和實值可以是不一樣的。map與set的查詢操作本質上是一樣的,沒有特殊的地方。map使用鍵值排列元素的位置,因而也不允許插入相同鍵值的元素,插入演算法返回pair iterator,bool 分別指...
關聯式容器 map
map的特性是,所有元素都會根據元素的鍵值自動被排序。map的所有元素的型別都是pair,而map的底層就是一顆紅黑樹。它不同set的是,它既有是鍵值 key 排序根據key排序,鍵值保持唯一性,它還具有實值 value pair既pair的first為key,second為value。我們不能修改...
STL中的關聯式容器 map(對映)
map,即 對映 map是關聯容器的一種,具體實現採用了紅黑樹的平衡二叉樹的資料結構。它提供一對一 其中第乙個稱為關鍵字key,每個關鍵字只能在map 現一次,第二個稱為該關鍵字的值value 的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。由於是利用...