STL中的set/multiset實(shí)操總結(jié)
來源:易賢網(wǎng) 閱讀:710 次 日期:2014-08-20 14:22:02
溫馨提示:易賢網(wǎng)小編為您整理了“STL中的set/multiset實(shí)操總結(jié)”,方便廣大網(wǎng)友查閱!

(1)使用set/multiset之前必須包含頭文件<set>:#include<set>

(2)namespace std{

template <class T, class Compare = less<T>,

class Allocator = allocator<T> >

class set;

template <class T, class Compare = less<T>,

class Allocator = allocator<T> >

class multiset;

}

只要是assignable、copyable、comparable的型別T都可以成為set或multiset的元素型別。

set/multiset的排序準(zhǔn)則必須是strict weak ordering其意義是:1必須是反對稱的,對判斷式op而言,如果op(x,y)為真則op(y,x)為假。2必須是可傳遞的,如果op(x,y)為真且op(y,z)為真則op(x,z)。3必須是非自反的,op(x,x)永遠(yuǎn)為假。

(3)set/multiset通常都是以平衡二叉樹來實(shí)現(xiàn)的,事實(shí)上set/multiset的實(shí)現(xiàn)版本大多以紅黑樹來實(shí)現(xiàn),它保證節(jié)點(diǎn)安插時(shí)最多只會做兩個(gè)重新連接動(dòng)作,而且到達(dá)某一元素的最長路徑最多只是最短路徑深度的兩倍。

(4)set/multiset的操作函數(shù):

set c 產(chǎn)生一個(gè)空set/multiset

set c(op) 以op為排序準(zhǔn)則產(chǎn)生一個(gè)空set/multiset

set c1(c2) 產(chǎn)生某一個(gè)set/multiset的副本

set c(beg, end) 以區(qū)間[beg, end)內(nèi)的元素產(chǎn)生一個(gè)set/multiset

set c(beg, end, op) 以op為排序準(zhǔn)則,以區(qū)間[beg, end)內(nèi)的元素產(chǎn)生一個(gè)set/multiset

c.~set() 銷毀所有元素,釋放內(nèi)存

其中set可為下列形式:set<Elem>、set<Elem, op>、multiset<Elem>、multiset<Elem, op>

c.size() 返回當(dāng)前的元素?cái)?shù)量

c.empty() 判斷c是否為空

c.max_size() 返回可容納的元素最大數(shù)值

c1 compare c2 compare可為==,!=,<,>,<=和>=

c.count(elem) 返回“元素值為elem”的元素個(gè)數(shù)

c.find(elem) 返回“元素值為elem”的第一個(gè)元素的迭代器,如果找不到就返回end()

c.lower_bound(elem) 返回elem的第一個(gè)可安插位置,也就是“元素值>=elem”的第一個(gè)元素位置

c.upper_bound(elem) 返回elem的最后一個(gè)可安插位置,也就是“元素值>elem”的第一個(gè)元素位置

c.equal_range(elem) 返回elem的第一個(gè)和最后一個(gè)位置,也就是“元素值==elem”的第一個(gè)元素區(qū)間,返回值為將lower_bound()和upper_bound()的返回值做成一個(gè)pair返回

c1 = c2 將c2全部元素賦值給c1

c1.swap(c2) 將c1和c2元素互換

c.begin() 返回一個(gè)雙向存取迭代器(將元素視為常數(shù)),指向第一個(gè)元素

c.end() 返回一個(gè)雙向存取迭代器(將元素視為常數(shù)),指向最后元素的下一個(gè)位置

c.rbegin() 返回一個(gè)逆向迭代器,指向逆向迭代的第一個(gè)元素

c.rend() 返回一個(gè)逆向迭代器,指向逆向迭代的最后元素的下一個(gè)位置

c.insert(elem) 插入一個(gè)elem副本并返回新元素的位置

c.insert(it, elem) 安插e(cuò)lem副本返回新元素的位置(it是一個(gè)提示指出安插操作的搜尋起點(diǎn))

c.insert(beg, end) 插入?yún)^(qū)間[beg, end)內(nèi)的所有元素副本,無返回值

c.erase(elem) 移除“與elem相等”的所有元素,返回被移除元素的個(gè)數(shù)

c.erase(it) 移除it位置上的元素,無返回

c.erase(beg, end) 移除[beg, end)區(qū)間內(nèi)的所有元素,無返回

c.clear() 將容器清空

set提供如下接口:

pair<iterator, bool> insert(const value_type& elem);

pair結(jié)構(gòu)中的second成員表示安插是否成功;first成員返回新元素的位置或返回現(xiàn)存的同值元素位置

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

multiset提供如下接口:

iterator insert(const value_type& elem);

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

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:STL中的set/multiset實(shí)操總結(jié)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)