STL之set具體解釋(二)

2021-09-08 04:41:01 字數 2693 閱讀 5834

首先來看看set集合容器:

set集合容器實現了紅黑樹的平衡二叉樹資料結構。在插入元素時它會自己主動調整二叉樹的排列,把該元素放到適當的位置,而且

保證左右子樹平衡。平衡二叉檢索樹採用中序遍歷演算法。

對於set,vector,map等等,它們的前向迭代器定義是這種(以set為例):

set::iterator it;

for(it=s.begin();it!=s.end();it++){}

那麼反向迭代器呢?

set::reverse_iterator rit;

for(rit=s.rbegin();rit!=s.rend();rit++){}

經常用法:insert(),erase(),find(),clear()

find()方法是查詢元素方法。假設找到就返回該元素迭代器的位置,否則就返回最後乙個元素後面的乙個位置。

這樣來使用:

it=s.find(5);

if(it!=s.end()) {}

else            {}

關於比較函式:

假設元素不是結構體。而是基本資料型別,那麼就自定義乙個比較函式:

[cpp]view plain

copy

struct

cmp  

};  

intmain()    

假設元素是結構體,那麼比較函式直接能夠寫在結構體裡面。

[cpp]view plain

copy

struct

student  

};  

sets;  

對於set容器來說。它不能有keyword同樣的元素同一時候存在,假設要保留同樣的元素,就用multiset多重集合容器。

其基本操作跟set集合容器幾乎相同一樣。

定義方法是:multisetms;

map映照容器:

map映照容器的元素資料是由乙個鍵值和乙個映照資料組成的,鍵值與映照資料之間具有一一相應關係。

map也是用紅黑樹實現

的。

同set一樣,map不同意插入元素鍵值同樣,而multimap多重應照集合能夠同意鍵值反覆。

用法:

[cpp]view plain

copy

intmain()    

主要方法有:insert(),clear(),erase(),find()等等,基本跟set一樣。對於multimap用法跟map幾乎相同一樣。

std::pair基本的作用是將兩個資料組合成乙個資料,兩個資料能夠是同一型別或者不同型別。

比如 std::pair或者 std::pair等。

pair實質上是乙個結構體。其基本的兩個成員變數

是first和second。這兩個變數能夠直接使用。

初始化乙個pair能夠使用建構函式,也能夠使用std::make_pair函式。

make_pair函式的定義例如以下:

[cpp]view plain

copy

template

pair make_pair(t1 a, t2 b)     

所以m.insert(pair("luce",88.5));

與 m.insert(make_pair("luce",88.5)); 是相同的效果。

演示樣例:

[cpp]view plain

copy

intmain()    

STL學習之set容器

set容器只是單純的鍵的集合。除了兩種例外情況外,set容器支援大部分的map操作。建構函式 cpp view plain copy explicit set const compare comp compare const allocator allocator template class in...

STL庫之set集合

include include 使用set集合的好處是查詢方便,使用的資料結構是紅黑樹 using namespace std int main 遍歷 set iterator it for it m.begin it m.end it 反向遍歷 set reverse iterator it fo...

STL容器之set用法

目錄 一 set容器概念 二 set構造和基本函式介面 三 統計和查詢 set是一種關聯式容器,底層是通過平衡二叉樹 紅黑樹 實現的,插入 刪除和查詢效率都非常高,所有元素插入容器中,會被預設以公升序的形式進行排序,而且不允許插入已經存在且相同的資料元素。此外還有乙個multiset容器,它的底層實...