两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1. 簡(jiǎn)介

Set(集合)屬于關(guān)聯(lián)式容器,也是STL中最實(shí)用的容器,關(guān)聯(lián)式容器依據(jù)特定的排序準(zhǔn)則,自動(dòng)為其元素排序。Set集合的底層使用一顆紅黑樹(可能讀者對(duì)此不太了解,等但學(xué)到樹論與圖論的章節(jié)的時(shí)候就會(huì)明白原因),其屬于一種非線性的數(shù)據(jù)結(jié)構(gòu),每一次插入數(shù)據(jù)都會(huì)自動(dòng)進(jìn)行排序,注意,不是需要排序時(shí)再排序,而是每一次插入數(shù)據(jù)的時(shí)候其都會(huì)自動(dòng)進(jìn)行排序。因此,Set中的元素總是順序的。

Set的性質(zhì)有:數(shù)據(jù)自動(dòng)進(jìn)行排序且數(shù)據(jù)唯一,是一種集合元素,允許進(jìn)行數(shù)學(xué)上的集合相關(guān)的操作。

2. 相關(guān)頭文件

頭文件:#include<set>

3. 初始化

初始化格式:

template < class T,                        
           class Compare = less<T>,        
           class Alloc = allocator<T>      
           > class set;

基本上就是三個(gè)參數(shù),第一個(gè)是值,第二個(gè)比較器,用于比較內(nèi)容,默認(rèn)為less<Key>即降序,第三個(gè)是內(nèi)存配置器,負(fù)責(zé)內(nèi)存的分配和銷毀。

在實(shí)際使用中,我們僅僅為其分配值就足以滿足大部分需求。

set<int> s;       //直接指定值的類型創(chuàng)建,其他為默認(rèn)方法
//其余方法與前文的創(chuàng)建方法類似,不做具體展示……

4. 迭代器

C98標(biāo)準(zhǔn)下:

 for (set<int>::iterator it=s.begin(); it!=s.end(); ++it)
        cout << *it << ' ';

這也是前文學(xué)過的標(biāo)準(zhǔn)用法,接下來,讓我們了解一個(gè)更加先進(jìn)和便捷的方法,auto方法迭代,這需要我們編譯器開啟C11標(biāo)準(zhǔn),每個(gè)編譯器的開啟標(biāo)準(zhǔn)不一,請(qǐng)具體情況具體分析。

C11標(biāo)準(zhǔn)下:

 for (auto it=s.cbegin(); it!=s.cend(); ++it)
        cout << *it << ' ';

可見我們使用了auto進(jìn)行了迭代器類型的自動(dòng)識(shí)別,省去了我們的聲明迭代器的那一部分內(nèi)容,這使得代碼更加簡(jiǎn)化。

5. 常用接口

我們使用set<int> s 預(yù)先創(chuàng)建了一個(gè)集合,命名為s,方便舉例

a)大小size()

返回元素的個(gè)數(shù)

函數(shù)原型:size_type size() const;

cout<<s.size()<<endl;   //直接返回元素個(gè)數(shù)

b) 插入元素insert()

插入一個(gè)元素,插入元素的類型必須與創(chuàng)建的容器類型一致

函數(shù)原型:pair<iterator,bool> insert (const value_type& val);

s.insert(i);

c)刪除元素erase()

刪除一個(gè)元素,或者是一段區(qū)間的元素,將會(huì)自動(dòng)縮減空間使用。

函數(shù)原型:

iterator erase (iterator position);

iterator erase (iterator first, iterator last);

使用方法:

s.erase(s.begin());  //使用迭代器的方法刪除第一個(gè)元素
s.erase(s.begin(),s.end());     //刪除一段內(nèi)容,這里是全部刪除

d)清空元素clear()

將整個(gè)set集合中的內(nèi)容清空,注意,這里只是清空元素,其所占用的最大內(nèi)存空間還是不會(huì)改變的。

s.clear();

e)查找元素find()

函數(shù)原型:iterator find (const value_type& val) const;

函數(shù)原型:iterator find (const value_type& val) const;

Find方法返回一個(gè)迭代器類型的指針,因此我們直接通過find獲取其數(shù)據(jù)的時(shí)候需要使用指針*的方式進(jìn)行表示,否則將會(huì)報(bào)錯(cuò)。

cout<< *s.find(4) <<endl;

或者 實(shí)現(xiàn)找到的刪除指定元素

s.erase(s.find(4));


點(diǎn)贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個(gè)爬蟲的Python編程課程

只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)