STL14-set/multiset容器

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;
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

普通的java类型是指,String是一个很普通的类 - Java那些事儿

上一篇我们讲了Java中的数组&#xff0c;其实是为本章的内容做准备的&#xff0c;String这个类是我们在写Java代码中用得最多的一个类&#xff0c;没有之一&#xff0c;今天我们就讲讲它&#xff0c;我们打开String这个类的源码&#xff1a;声明了一个char[]数组&#xff0c;变…

STL15-map/multimap容器

map的key值不可以重复 multimap的key值可以重复 #if 1 #include<iostream> #include<map> using namespace std; //初始化 void test01() {//map容器参数 第一个参数key的类型 第二个参数value类型map<int, int> mymap;//插入元素 pair.first key值 pair.se…

php nginx日志分析,如何通过NGINX的log日志来分析网站的访问情况,试试这些命令...

想知道你的网站每天的访问情况吗&#xff1f;有多少人访问了&#xff1f;访问最多的页面是哪个&#xff1f;哪个时段访问的人最多&#xff1f;哪个地方访问的最多&#xff1f;每秒有多少请求&#xff1f;很好奇吧&#xff0c;只要你是使用了nginx进行请求抓发&#xff0c;那么就…

ajax获取表单php,Yii2基于Ajax自动获取表单数据的方法

本文实例讲述了Yii2基于Ajax自动获取表单数据的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;这里有两张表&#xff0c;表结构如下&#xff0c;locations表存放的省份和邮编等信息&#xff0c;两张表的model和curd均使用gii生成yii2advanced.customers表custome…

php response响应,9. 响应 (Response)

## 为什么单独创建一个Response?跟为什么要单独创建一个Request 一样。原因: 可以管理如: 在 swoole 不应该用 echo, 因为 swoole 是 cli 运行,只会输出在命令行。必须 只有一个地方能 输出响应 就是此篇的功能确保有 集中控制权 是非常重要 !(后面代码有 echo 都是不规范的, …

php带来互联网的影响,网络对我们的影响有哪些?

影响有&#xff1a;1、丰富了我们的业余生活&#xff1b;2、降低了获取知识的成本&#xff0c;降低了提升工作的能力的成本&#xff0c;提高了工作的效率&#xff0c;可以快速建立良好的人脉关系&#xff1b;3、让购物变得更加简单便捷&#xff1b;4、朋友间深度沟通与交流越来…

STL17-函数对象

仿函数&#xff1a; #include<iostream> #include<vector> #include<algorithm> using namespace std; //仿函数&#xff08;函数对象&#xff09;重载“&#xff08;&#xff09;”操作符 使类对象可以像函数那样调用 //仿函数是一个类&#xff0c;不是一个…

数据库操作php,一个数据库操作PHP类

/** Author 墨龙* Time 2010年12月2日 15:50:35*/$db new mysql($db_host,$db_user,$db_password,$db_table,$db_conn,$pre,$coding);class mysql{private $db_host;private $db_user;private $db_password;private $db_table;private $db_conn; //数据库连接标识;private $re…

STL18常用算法

#include<iostream> #include<algorithm> #include<vector> using namespace std; //transform 将一个容器中的元素搬运在另一个容器中 #if 0 //错误 struct PrintVector {void operator()(int v) {cout << v << " ";} }; void test0…

eclipse java ui,Eclipse Forms筹划漂亮UI之高级组件[Java编程]

赞助商链接本文“Eclipse Forms筹划漂亮UI之高级组件[Java编程]”是由七道奇为您精心收集&#xff0c;来源于网络转载&#xff0c;文章版权归文章作者所有&#xff0c;本站不对其观点以及内容做任何评价&#xff0c;请读者自行判断&#xff0c;以下是其具体内容&#xff1a;Ecl…

php中页面平滑回到顶部代码,原生JS实现平滑回到顶部组件

返回顶部组件是一种极其常见的网页功能&#xff0c;需求简单&#xff1a;页面滚动一定距离后&#xff0c;显示返回顶部的按钮&#xff0c;点击该按钮可以将滚动条滚回至页面开始的位置。实现思路也很容易&#xff0c;只要改变document.documentElement.scrollTop或document.bod…

C++基础01-C++对c的增强

所谓namespace&#xff0c;是指标识符的各种可见范围。C标准程序库中的所 有标识符都被定义于一个名为std的namespace中。 一 &#xff1a;<iostream>和<iostream.h>格式不一样&#xff0c;前者没有后缀&#xff0c;实际上&#xff0c; 在你的编译器include文件夹…

php环行队列实现,java数组实现队列及环形队列实现过程解析

这篇文章主要介绍了java数组实现队列及环形队列实现过程解析,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下代码内容ArrayQueue---用数组实现队列package com.structure;import java.util.Scanner;/*** auther:…

C++混淆点-static关键字理解

.先来介绍它的第一条也是最重要的一条&#xff1a;隐藏。&#xff08;static函数&#xff0c;static变量均可&#xff09; 当同时编译多个文件时&#xff0c;所有未加static前缀的全局变量和函数都具有全局可见性。 举例来说明。同时编译两个源文件&#xff0c;一个是a.c&…

php分页代码 页数太多,php分页函数示例代码分享

一例php分页函数代码。分享一例php分页函数代码&#xff0c;用此函数实现分页代码很不错。代码&#xff0c;php分页函数。/** 使用方法&#xff1a;require_once(mypage.php);$resultmysql_query("select * from mytable", $myconn);$totalmysql_num_rows($result); …

C++基础02-C++对c的拓展

变量名实质上是一段连续存储空间的别名&#xff0c;是一个标号(门牌号) 通过变量来申请并命名内存空间. 通过变量的名字可以使用存储空间. 变量名&#xff0c;本身是一段内存的引用&#xff0c;即别名(alias). 引用可以看作一个已定义变量的别名。 引用的语法&#xff…

matlab在电力系统故障的应用,MATLAB在电力系统故障分析中的应用

第5章MATLAB在电力系统故障分析中的仿真实例 5 1无穷大功率电源供电系统三相短路仿真5 2同步发电机突然短路的暂态过程仿真5 3小电流接地系统单相故障 5 1无穷大功率电源供电系统三相短路仿真 5 1 1无穷大功率电源供电系统三相短路的暂态过程5 1 2无穷大功率电源供电系统仿真模…

C++基础03-C++对c的拓展-函数

一、内联函数 c 语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用 的开销。但是由于宏函数的处理发生在预处理阶段,缺失了语法检测 和有可能带来的语 意差错。 特点&#xff1a; 1&#xff09;内联函数声明时inline关键字必须和函数定义结合在一起&a…

php小程序onload,微信小程序 loading 组件实例详解

这篇文章主要介绍了微信小程序 loading 组件实例详解的相关资料,需要的朋友可以参考下loading通常使用在请求网络数据时的一种方式&#xff0c;通过hidden属性设置显示与否主要属性&#xff1a;wxml显示loading正在加载jsPage({data:{// text:"这是一个页面"hiddenLo…

机器学习之实验过程02

机器学习之实验过程-数据清理 from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_errordata_path = /home/py/Work/机器学习/labs/data/Feedback.csv df = pd.read_csv(data_path) df.head() print (df.tail()) rename_pai…