本篇学习set修改数据相关的操作,具体操作函数如下:
清除内容 (公开成员函数) | |
擦除元素 (公开成员函数) | |
交换内容 (公开成员函数) | |
(C++17) | 从另一容器释出结点 (公开成员函数) |
(C++17) | 从另一容器接合结点 (公开成员函数) |
示例代码:
#include <set>
#include <string>
#include <time.h>
#include <iostream>
using namespace std;
void changeOperator()
{
//1.clear清除内容
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擦除元素
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交换内容
set<int> set3 = {11, 71, 31, 41, 21};
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 提取
set<int> set5 = {13, 73, 33, 43, 23};
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
set<int> set7 = {14, 74, 35, 47, 25};
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;
}
运行结果:
参考: