set只有一个方法就是insert

#include<iostream>
#include<set>
//set和multiset是一个头文件
//set内部实现机制 红黑色(平衡二叉树的一种)
//关联式容器
//set不允许有重复元素
//multiset运行有重复元素
//容器查找效率高
//容器根据元素的值自动对元素排序  默认从小到大
using namespace std;//仿函数
class mycompare {
public:bool operator()(int v1, int v2) {return v1 > v2;}
};
void PrintSet(set<int> s1) {for (set<int>::iterator it = s1.begin(); it != s1.end(); it++){cout << *it << " ";}cout << endl;
}//set初始化
void test01() {mycompare com;com(10, 20);  //仿函数set<int> s1;s1.insert(5);s1.insert(2);s1.insert(8);s1.insert(1);for (set<int>::iterator it = s1.begin(); it != s1.end(); it++){cout << *it << " ";}//拷贝构造set<int> s2(s1);PrintSet(s2);//赋值set<int> s3;s3 = s1;//删除操作s1.erase(s1.begin());cout << "删除s1.begin()" << endl;PrintSet(s1);s1.erase(8);cout << "删除8" << endl;PrintSet(s1);//如何改变默认排序?//先序遍历 中序遍历 后序遍历
}//set查找
void test02() {//实值set<int> s1;s1.insert(5);s1.insert(2);s1.insert(8);s1.insert(1);PrintSet(s1);set<int>::iterator ret = s1.find(8);cout << "find 8" << endl;if (ret == s1.end()) {cout << "没有找到" << endl;}else {cout << "ret:"<<*ret << endl;}//lower_bound:找第一个大于等于指定值的元素 返回为迭代器cout << "lower_bound(大于等于) 4" << endl;set<int>::iterator ret1 = s1.lower_bound(4);  if (ret1 == s1.end()) {cout << "没有找到" << endl;}else {cout << "ret1:" << *ret1 << endl;}//upper_bound:找第一个大于指定值的元素 返回为迭代器cout << "upper_bound(大于) 2" << endl;set<int>::iterator ret2 = s1.upper_bound(2);if (ret2 == s1.end()) {cout << "没有找到" << endl;}else {cout << "ret2:" << *ret2 << endl;}//equal_range 返回lower_bound 和 upper_bound值/*set<int>::iterator e1;set<int>::iterator e2;pair<e1, e2>=s1.equal_range(5);  错误做法*/cout << "equal_range:返回lower_bound 和 upper_bound值 5" << endl;pair<set<int>::iterator, set<int>::iterator> myret= s1.equal_range(5);myret.first;myret.second;if (myret.first == s1.end()) {cout << "没有找到" << endl;}else {cout << "找到了" <<*myret.first<< endl;}if (myret.second == s1.end()) {cout << "没有找到" << endl;}else {cout << "找到了" << *myret.second << endl;}}class Person {
public:int id;int age;
public:Person(int Age,int Id):age(Age),id(Id){}
};
class mycompare2 {
public:bool operator() (Person p1, Person p2) const{return p1.age > p2.age;  //用什么排序 把什么作为key关键字}
};
void test03() {//set<Person> sp;//Person p1(20, 10), p2(30, 30), p3(34, 12);//sp.insert(p1);//sp.insert(p2);//sp.insert(p3);  //无法对p1,p2,p3进行排序 所以运行报错set<Person,mycompare2> sp;Person p1(20, 10), p2(30, 30), p3(34, 12);Person p4(20, 10);sp.insert(p1);sp.insert(p2);sp.insert(p3);  //无法对p1,p2,p3进行排序 所以运行报错for (set<Person, mycompare2>::iterator it = sp.begin(); it != sp.end(); it++) {cout << (*it).age << " " << (*it).id << endl;}set<Person, mycompare2>::iterator ret = sp.find(p4);if (ret == sp.end()) {cout << "未找到" << endl;}else {cout << "Age:"<<(*ret).age << endl;}
}
int main(int) {cout << "test01" << endl;test01();cout << "test02" << endl;test02();cout << "test03" << endl;test03();return 0;
}

#include<iostream>
#include<string>
using namespace std;//类模板的实现需要指定类型
//函数模板的实现不需要指定类型
//类模板:template<class T1,class T2> struct pair;void test01() {//第一种方法创建一个对组  构造 方法pair<string, int> pair1(string("name"), 1);cout << pair1.first << endl;cout << pair1.second << endl;//第二种pair<string, int> pair2 = make_pair("name", 30);cout << pair2.first << endl;cout << pair2.second << endl;//pair= 赋值pair<string, int> pair3 = pair2;cout << pair3.first << endl;cout << pair3.second << endl;
}int main() {test01();return 0;
}

STL14-set/multiset容器相关推荐

  1. set和multiset容器

    1 set和multiset容器的能力 set 和multiset容器的内部结构通常由平衡二叉树(balancedbinary tree)来实现.当元素放入容器中时,会按照一定的排序法则自动排序,默认 ...

  2. set和multiset容器简介

    set和multiset容器简介 开发工具与关键技术:C++.VisualStudio 作者:何任贤 撰写时间:2019年06月20日 set 是一个集合容器,其中所包含的元素是唯一的,集合中的元素按 ...

  3. C++STL的set/ multiset容器

    C++STL的set/ multiset容器 set基本概念 set大小和交换 set插入和删除 set查找和统计 set和multiset区别 pair对组创建 set容器排序 set基本概念 简介 ...

  4. c++中的set容器和multiset容器

    set容器基本概念 set的特性是,所有元素都会根据元素的键值自动被排序.set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值.set不允许两个元素又相同的键值. 我们不可以 ...

  5. 第十三篇:multimap容器和multiset容器中的find操作

    前言 multimap容器是map容器的" 增强版 ",它允许一个键对应多个值.对于map容器来说,find函数将会返回第一个键值匹配元素所在处的迭代器.那么对于multimap容 ...

  6. stl之multiset容器的应用

    与set集合容器一样,multiset多重集合容器也使用红黑树组织元素数据,只是multiset容器允许将重复的元素健值插入,而set容器则不允许. set容器所使用的C++标准头文件set,其实也是 ...

  7. 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】

    [C++][第六篇-2][黑马 p215~p242][list容器][set/multiset容器][map/multimap容器][函数对象][谓词][内建函数对象] 3.7 list容器(p215 ...

  8. c++STL标准模板库(关联式容器(set,multiset容器))

    关联式容器(associate容器)是STL提供的容器的一种,其中元素与序列容器不同的是它已经排过序,它主要通过关键字的方式来提高查询效率.关联式容器包含set.multiset.map.multim ...

  9. set/multiset容器

    所有元素都会在插入时自动被排序 本质: set/multiset属于关联式容器,底层结构是用二叉树实现 set和multiset区别: set不允许容器中有重复的元素 multiset允许容器中有重复 ...

最新文章

  1. 简单使用DESeq2/EdgeR做差异分析
  2. CBAC ftp测试
  3. python 零散记录(三) 格式化字符串 字符串相关方法
  4. GDCM:gdcm::SequenceOfItems的测试程序
  5. 享元设计模式coding
  6. php语句结束标记,PHP结束标记“?”
  7. 并发、并行、线程、进程与CPU基本概念
  8. hibernate 简单笔记(一)
  9. 利用hibernate中的SchemaExport生成数据表
  10. C#网络编程----(二)启动、停止和观察进程
  11. MNIST数据集的下载
  12. PDI(KETTLE)学习笔记
  13. 我的大数据之路(一)-数据仓库也需要大数据
  14. 手把手教你php调用短信接口(smsapi)实现发送短信验证码
  15. U盘复制东西时显示:磁盘被写保护,请去掉写保护或使用另一张磁盘的解决方法。
  16. 计算机游戏cpu,玩游戏选什么CPU 10款2017适合玩游戏的处理器推荐 (全文)
  17. python第八天 运算符的使用
  18. 程序员2022年薪资出炉:一线城市薪资中位数已破1.5万元,你工资涨了吗?
  19. 【无线电】无线电频谱和波段划分
  20. pr制作镜头移动转场(调整图层,方向模糊)

热门文章

  1. linux的shell命令 a,linux shell命令大全(都是随堂笔记)
  2. 乐高机器人教室布置图片大全_圣诞节手抄报内容简单图片漂亮
  3. python语言程序设计难不难_零基础学Python编程开发难度大吗?从哪学起?
  4. vue 组件 - 非单文件组件
  5. daad转换器实验数据_箔芯片电阻在高温应用A/D转换器中的应用
  6. html页面li节点排序,排序DOM节点的最简单方法?
  7. oracle执行计划的概念,SQL语句性能调整之ORACLE的执行计划
  8. 删除字符串中的指定字符
  9. (BFS)Prime Path (poj3126)
  10. 优秀Java开发者都在看的书籍