国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

如何使用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或自定義的結構體名稱。聲明set時還要包含set頭文件,即`include `。

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

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

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

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

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

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

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

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

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

set常用于排序和去重

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

```cpp

set numbers;

// 插入元素

(5);

(2);

(8);

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

// 輸出排序后的元素

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

cout << *it << " ";

}

```

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

標簽: