代码如下:

#include <iostream>
#include <set>
using namespace std;void printSet(set<int>&s)
{for (set<int>::iterator it = s.begin(); it != s.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{set<int>s1;s1.insert(10);s1.insert(10);s1.insert(30);s1.insert(20);s1.insert(40);printSet(s1);set<int>s2(s1);printSet(s2);set<int>s3;s3 = s2;printSet(s3);}int main()
{test01();return 0;
}

测试结果:

总结:


代码如下:

#include <iostream>
#include <set>
using namespace std;void printSet(set<int>&s)
{for (set<int>::iterator it = s.begin(); it != s.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{set<int>s1;s1.insert(10);s1.insert(30);s1.insert(20);s1.insert(40);if (s1.empty()){cout << "s1 empty" << endl;}else{cout << "s1 no empty" << endl;cout << "s1 size = " << s1.size() << endl;}set<int>s2;s2.insert(100);s2.insert(300);s2.insert(200);s2.insert(400);cout << "交换前" << endl;printSet(s1);printSet(s2);cout << "交换后" << endl;s1.swap(s2);printSet(s1);printSet(s2);
}int main()
{test01();return 0;
}

测试结果:

总结:


代码如下:

#include <iostream>
#include <set>
using namespace std;void printSet(set<int>&s)
{for (set<int>::iterator it = s.begin(); it != s.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{set<int>s1;s1.insert(10);s1.insert(30);s1.insert(20);s1.insert(40);printSet(s1);s1.erase(s1.begin());printSet(s1);s1.erase(30);printSet(s1);s1.clear();printSet(s1);}int main()
{test01();return 0;
}

测试结果:

总结:

插入 — insert
删除 — erase
清空 — clear

代码如下:

#include <iostream>
#include <set>
using namespace std;void printSet(set<int>&s)
{for (set<int>::iterator it = s.begin(); it != s.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{set<int>s1;s1.insert(10);s1.insert(30);s1.insert(20);s1.insert(40);set<int>::iterator pos = s1.find(30);if (pos != s1.end()){cout << "find elem" << *pos<<endl;}else{cout << "no find elem" << endl;}int num = s1.count(30);cout << "num = " << num << endl;}int main()
{test01();return 0;
}

测试结果:

总结:

代码如下:

#include <iostream>
#include <set>
using namespace std;void printSet(set<int>&s)
{for (set<int>::iterator it = s.begin(); it != s.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{set<int>s;pair<set<int>::iterator, bool> ret = s.insert(10);if (ret.second){cout << "success 1" << endl;}else{cout << "fail 1" << endl;}ret = s.insert(10);if (ret.second){cout << "success 2" << endl;}else{cout << "fail 2" << endl;}multiset<int>ms;ms.insert(10);ms.insert(10);for (multiset<int>::iterator it = ms.begin(); it != ms.end(); it++){cout << *it << " ";}cout << endl;
}int main()
{test01();return 0;
}

测试结果:

总结:

set存放内置数据类型

代码如下:

#include <iostream>
#include <set>
using namespace std;void printSet(set<int>&s)
{for (set<int>::iterator it = s.begin(); it != s.end(); it++){cout << *it << " ";}cout << endl;
}class cmp
{public:bool operator()(int a, int b){return a > b;}
};void test01()
{set<int>s1;s1.insert(10);s1.insert(40);s1.insert(20);s1.insert(30);s1.insert(50);for (set<int>::iterator it = s1.begin(); it != s1.end(); it++){cout << *it << " ";}cout << endl;set<int, cmp>s2;s2.insert(10);s2.insert(40);s2.insert(20);s2.insert(30);s2.insert(50);for (set<int, cmp>::iterator it = s2.begin(); it != s2.end(); it++){cout << *it << " ";}cout << endl;}int main()
{test01();return 0;
}

测试结果:

总结:
利用仿函数可以指定set容器的排序规则。

set存放自定义数据类型
代码如下:

#include <iostream>
#include <string>
#include <set>
using namespace std;void printSet(set<int>&s)
{for (set<int>::iterator it = s.begin(); it != s.end(); it++){cout << *it << " ";}cout << endl;
}class Person
{public:Person(string name, int age):myName(name),myAge(age){}string myName;int myAge;
};class cmp
{public:bool operator()(const Person & a, const Person &b){return a.myAge > b.myAge;}
};void test01()
{set<Person, cmp> s;typedef set<Person, cmp> setpc;Person p1("Tom", 23);Person p2("Mike", 27);Person p3("Bom", 25);Person p4("Jack", 21);s.insert(p1);s.insert(p2);s.insert(p3);s.insert(p4);for (setpc::iterator it = s.begin(); it != s.end(); it++){cout << "name = " << it->myName << "age = " << it->myAge << endl;}
}int main()
{test01();return 0;
}

测试结果:

总结:

对于自定义数据类型,set必须指定排序规则才可以插入数据。

[C++STL]set容器用法介绍相关推荐

  1. [C++STL]list容器用法介绍

    代码如下: #include <iostream> #include <string> #include <list> using namespace std;vo ...

  2. [C++STL]deque容器用法介绍

    代码如下: #include <iostream> #include <string> #include <deque> using namespace std;v ...

  3. [C++STL]vector容器用法介绍

    代码如下: #include <iostream> #include <string> #include <vector> using namespace std; ...

  4. [C++STL]map容器用法介绍

    代码如下: #include <iostream> #include <string> #include <map> using namespace std;voi ...

  5. [C++STL]queue容器用法介绍

  6. [C++STL]stack容器用法介绍

  7. [C++STL]string容器用法介绍

    string构造函数 代码如下: #include <iostream> #include <string> using namespace std;void test01() ...

  8. [C++ STL] 各容器简单介绍

    [C++ STL] 各容器简单介绍 目录 一.什么是STL? 二.容器(Containers) 2.1 vector 2.2 deque 2.3 list 2.4 set 2.5 map 2.6 容器 ...

  9. oracle 删除 queue,C++ stl队列Queue用法介绍:删除,插入等操作代码举例

    c++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型. C++队列Queue是一种容 ...

最新文章

  1. Oracle后台进程
  2. 你知道吗?Workspot属于二级VDI平台?
  3. 开发版速达与总部原版速达的优势
  4. Docker 安装创建
  5. 奥斯汀大学计算机专业怎么样,美国德州大学奥斯汀分校与加拿大ubc大学电子计算机专业哪个好...
  6. Gym - 100952H--H. Special Palindrome--dp整数划分(模板)
  7. 软件设计师习题笔记-重点习题一
  8. 【今日CV 计算机视觉论文速览 第137期】Fri, 28 Jun 2019
  9. 第六次作业--结对编程第二次
  10. 2016陕西省赛 Rui and her functions
  11. HDU2566 统计硬币【暴力】
  12. 数据库中,什么是事务,事务的特性
  13. 一段关于中国人口老龄化的评论
  14. python网络编程 赵宏_【干货收藏】Python面试指南大全
  15. Ubuntu下用snap7与西门子通信
  16. 微信小程序云开发入门到放弃(一)入门篇
  17. 1807521-02-3,PEP azide,PEP叠氮化物其中叠氮基发生点击反应
  18. Windows 微痛转 Linux: 万万没想到肯德基的网竟然这么好
  19. 学而不思则罔,思而不学则殆
  20. 揭秘!腾讯程序员告诉你当今最热门的5门编程语言

热门文章

  1. 利用Erdas监督分类方法提取城镇用地信息完整实验操作步骤
  2. 子窗体菜单合并到父窗体菜单的解决办法
  3. C语言试题三之计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5))
  4. 10分钟做一个新闻问答web站点[iVX低代码实战]
  5. python分层聚类集群合并_24、python分层聚类案例(scipy方法)
  6. python生成静态库_使用boost.python静态库
  7. oc引导windows蓝屏_跟电脑蓝屏say no!【亲测有效】
  8. 被清华免试录取的围棋天才,横扫60位围棋大师的最强AI,竟然都输给了高中生!?...
  9. 如何用数学方法估算一个女生前男友的数量?
  10. 吃货都是怎么给自己找理由的? | 今日最佳