unordered_set学习之删除操作clear,erase,swap,extract,merge
本篇学习unordered_set的删除操作,具体的函数如下clear(C++11)清除内容erase(C++11)擦除元素swap(C++11)交换内容extract(C++17)从另一容器释出结点merge(C++17)从另一容器接合结点
·
本篇学习unordered_set的删除操作,具体的函数如下
(C++11) | 清除内容 (公开成员函数) |
(C++11) | 擦除元素 (公开成员函数) |
(C++11) | 交换内容 (公开成员函数) |
(C++17) | 从另一容器释出结点 (公开成员函数) |
(C++17) | 从另一容器接合结点 (公开成员函数) |
#include <unordered_set>
#include <string>
#include <time.h>
#include <iostream>
using namespace std;
void changeOperator()
{
//1.clear清除内容
unordered_set<int> set1 = {1, 7, 3, 4, 2};
cout << "set1 clear before size = " << set1.size() << " empty = " << set1.empty() << endl;
set1.clear();
cout << "set1 clear after size = " << set1.size() << " empty = " << set1.empty() << endl;
//2.erase擦除元素
unordered_set<int> set2 = {10, 70, 30, 40, 20};
cout << "set2 erase before size = " << set2.size() << "\t";
for(auto val: set2)
{
cout << val << "\t";
}
set2.erase(13);//参数key
set2.erase(30);//参数key
cout << endl;
cout << "set2 erase after size = " << set2.size() << "\t";
for(auto val: set2)
{
cout << val << "\t";
}
cout << endl;
//3.swap交换内容
unordered_set<int> set3 = {11, 71, 31, 41, 21};
unordered_set<int> set4 = {12, 72, 32, 42, 22};
cout << "set3 swap before size = " << set3.size() << "\t";
for(auto val: set3)
{
cout << val << "\t";
}
cout << endl;
cout << "set4 swap before size = " << set4.size() << "\t";
for(auto val: set4)
{
cout << val << "\t";
}
cout << endl;
set3.swap(set4);
cout << "set3 swap after size = " << set3.size() << "\t";
for(auto val: set3)
{
cout << val << "\t";
}
cout << endl;
cout << "set4 swap after size = " << set4.size() << "\t";
for(auto val: set4)
{
cout << val << "\t";
}
cout << endl;
//4.extract从另一容器释出结点 C++17 提取
unordered_set<int> set5 = {13, 73, 33, 43, 23};
unordered_set<int> set6 = {56, 73};
cout << "set5 extract before size = " << set5.size() << "\t";
for(auto val: set5)
{
cout << val << "\t";
}
cout << endl;
auto nh = set5.extract(33);//参数key
nh.value() = 38;
set6.insert(move(nh));//把一个节点移动另一个容器中
cout << "set5 extract after size = " << set5.size() << "\t";
for(auto val: set5)
{
cout << val << "\t";
}
cout << endl;
cout << "set6 extract after size = " << set6.size() << "\t";
for(auto val: set6)
{
cout << val << "\t";
}
cout << endl;
//5.merge从另一容器接合结点 C++17
unordered_set<int> set7 = {14, 74, 35, 47, 25};
unordered_set<int> set8 = {12, 71, 35, 42, 25};
cout << "set7 merge before size = " << set7.size() << "\t";
for(auto val: set7)
{
cout << val << "\t";
}
cout << endl;
cout << "set8 merge before size = " << set8.size() << "\t";
for(auto val: set8)
{
cout << val << "\t";
}
cout << endl;
set7.merge(set8);//如果有相同的值不会合并
cout << "set7 merge after size = " << set7.size() << "\t";
for(auto val: set7)
{
cout << val << "\t";
}
cout << endl;
cout << "set8 merge after size = " << set8.size() << "\t";
for(auto val: set8)
{
cout << val << "\t";
}
cout << endl;
}
int main()
{
changeOperator();
cout << "Hello, world!" << endl;
return 0;
}
运行结果:
参考:
更多推荐
已为社区贡献3条内容
所有评论(0)