卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

如何使用C STL中的set

如何聲明一個set在C STL中,set是一個十分有用的容器。要聲明一個set,可以使用以下語法:```set name;```其中value_type是set中所要存儲的元素類型,例如int、s

如何聲明一個set

在C STL中,set是一個十分有用的容器。要聲明一個set,可以使用以下語法:

```

set name;

```

其中value_type是set中所要存儲的元素類型,例如int、string或自定義的結(jié)構(gòu)體名稱。聲明set時還要包含set頭文件,即`include `。

set中的元素類型必須定義小于號

set的內(nèi)部實現(xiàn)是一棵紅黑樹,因此set中的元素類型必須定義小于號。C 自帶的元素類型(如int、string)已經(jīng)幫我們定義好了小于號,它們在set中會按照從小到大的順序排列。如果是自定義的結(jié)構(gòu)體,則需要學(xué)會如何重載運算符。

set的眾多內(nèi)置函數(shù)

set提供了許多內(nèi)置函數(shù)來操作和訪問元素,以下是常用的幾個函數(shù):

1. insert(x)/erase(x):在set中插入/刪除元素x,其中x的類型必須是聲明該set時的類型。時間復(fù)雜度為O(logn),其中l(wèi)og以2為底,n為set中的元素個數(shù)。如果x不在該set中,則在erase(x)時什么都不會刪除。

2. begin()/end():返回該set的首/尾迭代器。因為是迭代器,如果想轉(zhuǎn)換成聲明時的類型,要在前面加上“*”。例如,聲明了set s;然后string k *(); 是不行的,因為你不能把一個迭代器賦值給“string”,要加上“*”解除引用:string k *(); 時間復(fù)雜度為O(1)。

3. empty()/size():判斷set是否為空/返回set的大?。丛貍€數(shù))。所有STL容器都有這兩個內(nèi)置函數(shù),時間復(fù)雜度為O(1)。

4. clear():清空一個set,時間復(fù)雜度為O(n)。

5. find(x):查找set中是否有元素x,如果有,則返回指向該元素的迭代器,否則返回end()。時間復(fù)雜度為O(logn)。

set常用于排序和去重

由于set的特性,它常常被用來進行排序和去重。以下代碼能夠?qū)崿F(xiàn)這兩個功能:

```cpp

set numbers;

// 插入元素

(5);

(2);

(8);

(2); // set會自動去重,只會記錄一次

// 輸出排序后的元素

for (auto it (); it ! numbers.end(); it) {

cout << *it << " ";

}

```

以上就是set的大部分使用方法與應(yīng)用。盡管set的大部分內(nèi)置函數(shù)時間復(fù)雜度較高,但如果運用得當,能夠幫助我們減少很多麻煩。

標簽: