C++ 中 Set 和 MultiSet 的區別
在 C++ 中,Set 和 MultiSet 都是用於儲存資料以方便訪問和插入的資料結構型別。根據這兩種資料結構的特性,我們可以區分 Set 和 MultiSet。
以下是 Set 和 MultiSet 之間的重要區別:
序號 | 關鍵點 | Set | MultiSet |
---|---|---|---|
1 | 定義 | C++ 中的 Set 可以定義為一種關聯容器,它以鍵值對的形式儲存資料,其中每個值元素都必須是唯一的,因為元素的值標識了它。 | 另一方面,MultiSet 是 C++ STL(標準模板庫)的一部分,定義為類似於 Set 的關聯容器,儲存排序的鍵值對,但與僅儲存唯一鍵的 Set 不同,MultiSet 可以具有重複的鍵。 |
2 | 排序 | 對於 Set,資料按排序順序儲存。 | 對於 MultiSet,資料也按排序順序儲存。 |
3 | 重複值 | 在 Set 中,不允許儲存重複值。 | 另一方面,在 MultiSet 中,我們可以儲存重複值。 |
4 | 操作 | 對於 Set,一旦插入就不能更改值,但是我們可以刪除它或再次插入它。 | 然而,對於 MultiSet,一旦插入也不能更改值。 |
示例
Set
#include #include using namespace std; main() { int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41}; set my_set; for(int i = 0; i<15; i++) { my_set.insert(data[i]); } set::iterator it; for(it = my_set.begin(); it != my_set.end(); it++) { cout << "Item: " << *it << endl; } }
輸出
Item: 11 Item: 22 Item: 23 Item: 33 Item: 41 Item: 44 Item: 55 Item: 66 Item: 77 Item: 88 Item: 99
示例
MultiSet
#include #include using namespace std; main() { int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41}; multiset my_set; for(int i = 0; i<15; i++) { my_set.insert(data[i]); } multiset::iterator it; for(it = my_set.begin(); it != my_set.end(); it++) { cout << "Item: " << *it << endl; } }
輸出
Item: 11 Item: 11 Item: 22 Item: 22 Item: 23 Item: 33 Item: 41 Item: 44 Item: 55 Item: 66 Item: 66 Item: 66 Item: 77 Item: 88 Item: 99
廣告