C++ 中 Set 和 MultiSet 的區別


在 C++ 中,Set 和 MultiSet 都是用於儲存資料以方便訪問和插入的資料結構型別。根據這兩種資料結構的特性,我們可以區分 Set 和 MultiSet。

以下是 Set 和 MultiSet 之間的重要區別:

序號關鍵點SetMultiSet
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

更新於: 2020-06-09

4K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告