c++ stl set和multiset
1,set的含義是集合,它是乙個有序的容器,裡面的元素都是排序好的,支援插入,刪除,查詢等操作,就
像乙個集合一樣。所有的操作的都是嚴格在logn時間之內完成,效率非常高。set和multiset的區別是:set插入的元素不能相同,但是multiset可以相同。
建立 multisetbase;
刪除:如果刪除元素a,那麼在定義的比較關係下和a相等的所有元素都會被刪除
base.count( a ):set能返回0或者1,multiset是有多少個返回多少個.
set和multiset都是引用標頭檔案,複雜度都是logn
2,set中的元素可以是任意型別的,但是由於需要排序,所以元素必須有乙個序,即大小的比較關係,比如
整數可以用<比較.
3,自定義比較函式;
include
typedef struct
ss(型別名);
struct cmp
}; (運算子過載,過載<)
setbase; ( 建立乙個元素型別是ss,名字是base的set )
注:定義了<,==和>以及>=,<=就都確定了,stl的比較關係都是用<來確定的,所以必須通
過定義< --「嚴格弱小於」來確定比較關
4,set的基本操作:
begin()
返回指向第乙個元素的迭代器
clear()
清除所有元素
count()
返回某個值元素的個數
empty()
如果集合為空,返回true
end()
返回指向最後乙個元素的迭代器
equal_range()返回集合中與給定值相等的上下限的兩個迭代器
erase()
刪除集合中的元素
find()
返回乙個指向被查詢到元素的迭代器
get_allocator() 返回集合的分配器
insert()
在集合中插入元素
lower_bound()返回指向大於(或等於)某值的第乙個元素的迭代器
key_comp()
返回乙個用於元素間值比較的函式
max_size()
返回集合能容納的元素的最大限值
rbegin()
返回指向集合中最後乙個元素的反向迭代器
rend()
返回指向集合中第乙個元素的反向迭代器
size()
集合中元素的數目
swap()
交換兩個集合變數
upper_bound()返回大於某個值元素的迭代器
value_comp()
返回乙個用於比較元素間的值的函式
5,自定義比較函式:
for example:
#include
#include
using namespace std;
typedef struct newtype;
struct compare//there is no ().
};//the 「; 」ishere;
setelement;
int main()
element自動排序是按照char s的大小排序的;
6.其他的set構造方法;
#include
#include
using namespace std;
bool fncomp (int lhs, int rhs) ;
int main () ;
setsecond (myints,myints+5);
// pointers used as iterators
setthird (second);
// a copy of second
setfourth (second.begin(), second.end());// iterator ctor.
setfifth;
// class as compare
bool(*fn_pt)(int,int) = fncomp;
setsixth (fn_pt);// function pointer as compare
return 0; }
set 的詳細用法參考
multiset 的詳細用法參考
C STL set和multiset的使用
std sets 那個s這個物件裡面存貯的元素是從小到大排序的,因為用std less作為比較工具。1,set的含義是集合,它是乙個有序的容器,裡面的元素都是排序好的,支援插入,刪除,查詢等操作,就 像乙個集合一樣。所有的操作的都是嚴格在logn時間之內完成,效率非常高。set和multiset的區...
C STL set和multiset的用法
c stl set和multiset的使用 std sets 那個s這個物件裡面存貯的元素是從小到大排序的,因為用std less作為比較工具。1,set的含義是集合,它是乙個有序的容器,裡面的元素都是排序好的,支援插入,刪除,查詢等操作,就 像乙個集合一樣。所有的操作的都是嚴格在logn時間之內完...
C STL原始碼分析 set和multiset
侯捷 sl體系結構核心分析 set和multiset探索 stl中assosiated container 比如 set 和 multiset 底層都是由紅黑樹作為支撐實現,所以在了解他們之前,有必要先來了解一下紅黑樹。template class traits class tree public ...