STL之set和multiset總結

2021-07-23 23:35:32 字數 4030 閱讀 9089

set c  //建立空集合,不包含任何元素  

set c(op) //以op為排序準則,產生乙個空的set

set c1(c2) //複製c2中的元素到c1中

set c(const value_type *first, const value_type* last)

//複製[first, last)之間元素構成新集合

set c(const value_type *first, const value_type* last,op)

//以op為排序準則,複製[first, last)之間元素構成新集合。

c.~set()

//銷毀所有元素,釋放記憶體

multiset mc //建立空集合,不包含任何元素

multiset mc(op) //以op為排序準則,產生乙個空的set

multiset c1(c2) //複製c2中的元素到c1中

multiset c(const value_type *first, const value_type* last)

//複製[first, last)之間元素構成新集合

multiset c(const value_type *first, const value_type* last,op)

//以op為排序準則,複製[first, last)之間元素構成新集合。

c.~set() //銷毀所有元素,釋放記憶體

c.size() //返回有容器中有多少元素  

c.max_size() //返回容器可以存放的最大資料的個數

int size() const

//返回容器元素個數

bool empty() const

//判斷容器是否為空,若返回true,表明容器已空

pairbool> insert( x)  //插入元素x  

iterator insert(iterator it,x) //在迭代器it處插入元素x

void insert(const value_type *first,const value_type *last)

//插入[first, last)之間元素

iterator erase(iterator it) //刪除迭代器指標it處元素

iterator erase(iterator first,iterator last)

//刪除[first, last)之間元素

size_type erase(const key& key) //刪除元素值等於key的元素

c.clear() //移除所有元素,使得容器變為空

pairbool> insert(const value_type& elem);  

iterator insert(iterator pos_hint, const value_type& elem);

iterator  insert(const value_type& elem);  

iterator insert(iterator pos_hint, const value_type& elem);

iterator begin()  //返回首元素的迭代器指標  

iterator end() //返回尾元素的迭代器指標

reverse_iterator rbegin() //返回尾元素的逆向迭代器指標

reverse_iterator rend() //返回首元素前乙個位置的迭代器指標

const_iterator lower_bound(const key& key)  //返回容器中大於等於key的迭代器指標  

const_iterator upper_bound(const key& key) //返回容器中大於key的迭代器指標

int count(const key& key) const

//返回容器中元素等於key的元素的個數

s.equal_range(elem)

//返回 elem 可以安插的第乙個位置和最後乙個位置,

//也就是(元素值 == elem) 的元素區間

//因為 set 不允許重複,面 multiset 允許重複,

//所以他們的 insert 操作有不有同的返回值

//set 提供的介面

pairbool> insert(const value_type& elem);

//返回 pair<>

//因為 set 不允許元素重複,所以如果插入相同的元素,將會返回失敗。

//pari 的 secode 成員表示插入是否成功。

//pair 的 first 成員返回新元素的位置。

const_iterator find(const key& key) const

//查詢功能,返回元素值等於key的迭代器指標

c1==c2  //將c2所有的元素賦給c1  

void swap(set& s) //交換集合元素

void swap(multiset& s) //交換多集合元素

#include 

#include

#include

#include

#include

using

namespace

std;

struct haha

//自定義乙個仿函式

};

/**

用來列印set集合的元素

*/void printset(set

s)

else

cout

<

***************set集合刪除特定值例項***********

*****************/

printf("/***************set集合刪除特定值例項*****

***********************/\n");

printf("原始集合s1\n");

printset(s1);

while (!s1.empty())

printf("\n刪除之後的元素\n");

if(s1.size()==0)else

/***************set集合結構體使用例項********

********************/

printf("\n/***************set集合結構體使用例項*****

***********************/\n");

setelement;

struct haha a,b,c,d,t;

a.a=1; a.s='b';

b.a=2; b.s='c';

c.a=4; c.s='d';

d.a=3; d.s='a';

element.insert(d);

element.insert(b);

element.insert(c);

element.insert(a);

set::iterator it;

for(it=element.begin(); it!=element.end();it++)

cout

<

cout

cout

<

}

執行結果:

C STL原始碼分析 set和multiset

侯捷 sl體系結構核心分析 set和multiset探索 stl中assosiated container 比如 set 和 multiset 底層都是由紅黑樹作為支撐實現,所以在了解他們之前,有必要先來了解一下紅黑樹。template class traits class tree public ...

STL詳解之set和multiset

set 裡面的元素不能重複,自動排序 multiset 裡面的元素自動排序,可以有重複的。include using namespace std include include void f1 不取最後一位的反斜槓0 vectorvec ia,ia 10 setiset vec.begin vec....

STL學習之set容器

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