STL之set部分功能實現

2021-07-02 14:50:43 字數 1717 閱讀 6998

stl 對這個序列可以進行查詢,插入刪除序列中的任意乙個元素,而完成這些操作的時間同這個序列中元素個數的對數成比例關係,並且當

游標指向乙個已刪除的元素時,刪除操作無效。而乙個經過更正的和更加實際的定義應該是:乙個集合(set)是乙個容器,它其中所包含的元素的值是唯一的。這在收集乙個資料的具體值的時候是有用的。集合中的元素按一定的順序排列,並被作為集合中的例項。乙個集合通過乙個

鍊錶來組織,在插入操作和刪除操作上比向量(vector)快,但查詢或新增末尾的元素時會有些慢。具體實現採用了

紅黑樹的平衡二叉樹的

資料結構。

#include#include#includeusing namespace std;

setset1;

setset2;

setset3;

/*stl為了共同性,很多函式都是公用的,e.g.: begin(),end()...

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() 返回乙個用於比較元素間的值的函式

std::set_intersection() :這個函式是求兩個集合的交集。

std::set_union() :求兩個集合的並集

std::set_difference():差集

*/void print()

int main()

; for(int i=0;i<10;i++)

//並集

set_union(set1.begin(),set1.end(),set2.begin(),set2.end(),inserter(set3,set3.begin()));

print();

set3.clear();

//交集

set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(),inserter(set3,set3.begin()));

print();

set3.clear();

//差集

set_difference(set1.begin(),set1.end(),set2.begin(),set2.end(),inserter( set3,set3.begin()));

print();

set3.clear();

}

STL中vector部分功能的實現

ifndef vector h define vector h template class vector iterator end const iterator begin const const iterator end const enum 設定乙個列舉來表示最小容量 private int ...

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