[C++STL]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;
}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容器用法介绍相关推荐
- [C++STL]list容器用法介绍
代码如下: #include <iostream> #include <string> #include <list> using namespace std;vo ...
- [C++STL]deque容器用法介绍
代码如下: #include <iostream> #include <string> #include <deque> using namespace std;v ...
- [C++STL]vector容器用法介绍
代码如下: #include <iostream> #include <string> #include <vector> using namespace std; ...
- [C++STL]map容器用法介绍
代码如下: #include <iostream> #include <string> #include <map> using namespace std;voi ...
- [C++STL]queue容器用法介绍
- [C++STL]stack容器用法介绍
- [C++STL]string容器用法介绍
string构造函数 代码如下: #include <iostream> #include <string> using namespace std;void test01() ...
- [C++ STL] 各容器简单介绍
[C++ STL] 各容器简单介绍 目录 一.什么是STL? 二.容器(Containers) 2.1 vector 2.2 deque 2.3 list 2.4 set 2.5 map 2.6 容器 ...
- oracle 删除 queue,C++ stl队列Queue用法介绍:删除,插入等操作代码举例
c++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型. C++队列Queue是一种容 ...
最新文章
- Oracle后台进程
- 你知道吗?Workspot属于二级VDI平台?
- 开发版速达与总部原版速达的优势
- Docker 安装创建
- 奥斯汀大学计算机专业怎么样,美国德州大学奥斯汀分校与加拿大ubc大学电子计算机专业哪个好...
- Gym - 100952H--H. Special Palindrome--dp整数划分(模板)
- 软件设计师习题笔记-重点习题一
- 【今日CV 计算机视觉论文速览 第137期】Fri, 28 Jun 2019
- 第六次作业--结对编程第二次
- 2016陕西省赛 Rui and her functions
- HDU2566 统计硬币【暴力】
- 数据库中,什么是事务,事务的特性
- 一段关于中国人口老龄化的评论
- python网络编程 赵宏_【干货收藏】Python面试指南大全
- Ubuntu下用snap7与西门子通信
- 微信小程序云开发入门到放弃(一)入门篇
- 1807521-02-3,PEP azide,PEP叠氮化物其中叠氮基发生点击反应
- Windows 微痛转 Linux: 万万没想到肯德基的网竟然这么好
- 学而不思则罔,思而不学则殆
- 揭秘!腾讯程序员告诉你当今最热门的5门编程语言
热门文章
- 利用Erdas监督分类方法提取城镇用地信息完整实验操作步骤
- 子窗体菜单合并到父窗体菜单的解决办法
- C语言试题三之计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5))
- 10分钟做一个新闻问答web站点[iVX低代码实战]
- python分层聚类集群合并_24、python分层聚类案例(scipy方法)
- python生成静态库_使用boost.python静态库
- oc引导windows蓝屏_跟电脑蓝屏say no!【亲测有效】
- 被清华免试录取的围棋天才,横扫60位围棋大师的最强AI,竟然都输给了高中生!?...
- 如何用数学方法估算一个女生前男友的数量?
- 吃货都是怎么给自己找理由的? | 今日最佳