c STL set和multiset 學習筆記

2021-06-18 09:51:08 字數 2192 閱讀 6465

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 ...