1.设定
(i)按排序顺序存储值。
(ii)仅存储唯一值。
(iii)元素只能插入或删除,而不能修改。
(iv)我们可以通过指定开始迭代器和结束迭代器的位置来擦除1个以上的元素。
(v)使用迭代器遍历。
(vi)集被实现为二进制搜索树。
// CPP program to demonstrate insert and
// delete in set
#include
using namespace std;
int main()
{
// set declare
set s;
// Elements added to set
s.insert(12);
s.insert(10);
s.insert(2);
s.insert(10); // duplicate added
s.insert(90);
s.insert(85);
s.insert(45);
// Iterator declared to traverse
// set elements
set::iterator it, it1, it2;
cout << "Set elements after sort and "
"removing duplicates:\n";
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:\n";
for (it = s.begin(); it != s.end(); it++)
cout << *it << ' ';
return 0;
}
OUTPUT:
Set elements after sort and removing duplicates:
2 10 12 45 85 90
Set Elements after erase:
2 90
2.多集
(i)按排序顺序存储元素。
(ii)它允许存储多个元素。
(iii)我们可以通过指定start迭代器和end迭代器来擦除1个以上的元素。
注意:-所有其他属性与set相似。
// CPP program to demonstrate insert and
// delete in set
#include
using namespace std;
int main()
{
// multiset declare
multiset s;
// Elements added to set
s.insert(12);
s.insert(10);
s.insert(2);
s.insert(10); // duplicate added
s.insert(90);
s.insert(85);
s.insert(45);
// Iterator declared to traverse
// set elements
multiset::iterator it, it1, it2;
cout << "Multiset elements after sort\n";
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:\n";
for (it = s.begin(); it != s.end(); it++)
cout << *it << ' ';
return 0;
}
OUTPUT:
Multiset elements after sort
2 10 10 12 45 85 90
Multiset Elements after erase:
2 90
3. Unordered_set
(i)元素可以任何顺序存储。 (无排序顺序)
(ii)仅存储唯一值。
(iii)用于存储元素的哈希表。
(iv)我们只能删除给出迭代器位置的元素。
注意:-所有其他属性与set相似。
// CPP program to demonstrate insert and
// delete in unordered_set
#include
using namespace std;
int main()
{
// unordered_set declare
unordered_set s;
// Elements added to set
s.insert(12);
s.insert(10);
s.insert(2);
s.insert(10); // duplicate added
s.insert(90);
s.insert(85);
s.insert(45);
s.insert(12);
s.insert(70);
// Iterator declared to traverse
// set elements
unordered_set::iterator it, it1;
cout << "Unordered_set elements after sort:\n";
for (it = s.begin(); it != s.end(); it++)
cout << *it << ' ';
cout << '\n';
it1 = s.find(10);
// element 10 erased
s.erase(it1);
cout << "Unoredered_set Elements after erase:\n";
for (it = s.begin(); it != s.end(); it++)
cout << *it << ' ';
return 0;
}
OUTPUT:
Unordered_set elements after sort:
70 85 45 12 10 2 90
Unoredered_set Elements after erase:
70 85 45 12 2 90
4. Unordered_multiset
(i)元素可以任何顺序存储。
(ii)可以存储重复的元素。
(iii)用于存储元素的哈希表。
(iv)我们只能删除给出迭代器位置的元素。
注意:-所有其他属性与set相似。
// CPP program to demonstrate insert and
// delete in unordered_multiset
#include
using namespace std;
int main()
{
// unordered_multiset declare
unordered_multiset s;
// Elements added to set
s.insert(12);
s.insert(10);
s.insert(2);
s.insert(10); // duplicate added
s.insert(90);
s.insert(85);
s.insert(45);
// Iterator declared to traverse
// set elements
unordered_multiset::iterator it, it1;
cout << "Unordered-Multiset elements after sort:\n";
for (it = s.begin(); it != s.end(); it++)
cout << *it << ' ';
cout << '\n';
it1 = s.find(10);
// element 10 trained
s.erase(it1);
cout << "Unordered-Multiset Elements after "
"erase:\n";
for (it = s.begin(); it != s.end(); it++)
cout << *it << ' ';
return 0;
}
OUTPUT:
Unordered-Multiset elements after sort:
85 45 12 90 2 10 10
Unordered-Multiset Elements after erase:
85 45 12 90 2 10
结论 :
用简单的话来说, set是一个存储排序和唯一元素的容器。如果添加无序,则表示元素未排序。如果添加了多集,则表示允许重复元素存储。
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。