在 C++ 标准模板库中:set
、multiset
、unordered_set
和unordered_multiset
用于存储元素。 尽管它们相似,但在某些功能上彼此不同。下面讨论它们的区别:
1、集合/set:它们是关联容器,按照特定顺序存储唯一元素。 以下是集合的属性:
- 按排序顺序存储值。
- 仅存储唯一值。
- 元素只能插入或删除,但不能修改。
- 可以通过给出开始迭代器和结束迭代器的位置来擦除超过 1 个元素。
- 使用迭代器进行遍历。
- 集合被实现为二叉搜索树。
语法
set<datatype> setname;
下面的例子演示了set
的应用:
// CPP program to demonstrate insert and // delete in set #include <bits/stdc++.h> using namespace std; // Driver code int main() { // set declare set<int> s; // Elements added to set s.insert(12); s.insert(10); s.insert(2); // duplicate added s.insert(10); s.insert(90); s.insert(85); s.insert(45); // Iterator declared to traverse // set elements set<int>::iterator it, it1, it2; cout << "Set elements after sort and removing duplicates:"; for (it = s.begin(); it != s.end(); it++) cout << *it << ' '; cout << 'n'; it1 = s.find(10); it2 = s.find(90); // elements from 10 to elements before // 90 erased s.erase(it1, it2); cout << "Set Elements after erase:"; for (it = s.begin(); it != s.end(); it++) cout << *it << ' '; return 0; }
运行结果如下:
Set elements after sort and removing duplicates: 2 10 12 45 85 90 Set Elements after erase: 2 90
2、multiset: 它们是关联容器,存储多个元素,这些元素按照特定的顺序具有等效值。 以下是多集的属性:
- 按排序顺序存储元素。
- multiset允许存储多个元素。
- 可以通过给出开始迭代器和结束迭代器来擦除超过 1 个元素。
注意:所有其他属性都与集合类似。
语法:
multiset<datatype> multisetName;
下面的例子演示了 multiset
的应用 –
// CPP program to demonstrate insert and // delete in set #include <bits/stdc++.h> using namespace std; // Driver Code int main() { // multiset declare multiset<int> s; // Elements added to set s.insert(12); s.insert(10); s.insert(2); // duplicate added s.insert(10); s.insert(90); s.insert(85); s.insert(45); // Iterator declared to traverse // set elements multiset<int>::iterator it, it1, it2; cout << "Multiset elements after sort"; for (it = s.begin(); it != s.end(); it++) cout << *it << ' '; cout << 'n'; it1 = s.find(10); it2 = s.find(90); // elements from 10 to elements before 90 // erased s.erase(it1, it2); cout << "Multiset Elements after erase:"; for (it = s.begin(); it != s.end(); it++) cout << *it << ' '; return 0; }
输出结果:
Multiset elements after sort 2 10 10 12 45 85 90 Multiset Elements after erase: 2 90
3、unordered_set:它们是关联容器,以无特定顺序存储唯一元素。 以下是 unordered_sets
的属性:
- 元素可以按任何顺序存储(没有排序的顺序)。
- 仅存储唯一值。
- 用于存储元素的哈希表。
- 只能擦除给定迭代器位置的元素。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264179.html