STL pair 常见用法详解
《算法笔记》学习笔记
pair 常见用法详解
//pair是一个很实用的”小玩意“,当想要将两个元素绑在一起作为一个合成元素,
//又不想因此定义结构体时,使用pair可以很方便地作为一个替代品。
//也就是说,pair实际上可以看作一个内部有两个元素地结构体,
//且这两个元素的类型是可以指定的。
struct pair {
typename1 first;
typename2 second;
};
1. pair的定义
//要使用pair,应先添加头文件#include <utility>,并在头文件下面加上"using namespace std"
//注意:由于map的内部实现中涉及pair,因此添加map头文件时会自动添加utility头文件
//此时如果需要使用pair,就不需要额外再添加utility头文件
//pair有两个参数,分别对应first和second的数据类型,它们可以是任意基本数据类型或容器
//定义
pair<typeName1, typeName2> name;
//定义参数为string和int类型的pair
pair<string, int> p;
//初始化
pair<string, int> p("haha", 5);
//临时构建一个pair,有两种方法
//<1> 将类型定义写在前面,后面用小括号内两个元素的方式
pair<string, int> ("haha", 5)
//<2> 使用自带的make_pair函数
make_pair("haha", 5)
2. pair中元素的访问
//pair中有两个元素,分别是first和second,只需要按正常结构体的方式去访问即可。
#include <iostream>
#include <utility>
#include <string>
using namespace std;
int main() {
pair<string, int> p;
p.first = "haha";
p.second = 5;
cout << p.first << " " << p.second << endl;
p = make_pair("xixi", 55);
cout << p.first << " " << p.second << endl;
p = pair<string, int>("heihei", 555);
cout << p.first << " " << p.second << endl;
return 0;
}
3. pair 常用函数实例解析
比较操作数
//两个pair类型数据可以直接使用 ==, !=, <, <=, >, >= 比较大小,比较规则先以first的大小作为标准
//只有当first相等时才去判别second的大小
#include <cstdio>
#incldue <utility>
using namespace std;
int main() {
pair<int, int> p1(5, 10);
pair<int, int> p2(5, 15);
pair<int, int> p3(10, 5);
if(p1 < p3) printf("p1 < p3\n");
if(p1 <= p3) printf("p1 <= p3\n");
if(p1 < p2) printf("p1 < p2\n");
return 0;
}
4. pair的常见用途
- 用来提代二元结构体及其构造函数,可以节省编码时间
- 作为map的键值对来进行插入
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
map<string, int> mp;
mp.insert(make_pair("heihei", 5));
mp.insert(pair<string, int>("haha", 10));
for(map<string, int>::iterator it = mp.begin(); it != mp.end(); it++) {
cout << it -> first << " " << it -> second << endl;
}
return 0;
}
STL pair 常见用法详解的更多相关文章
- STL stack 常见用法详解
<算法笔记>学习笔记 stack 常见用法详解 stack翻译为栈,是STL中实现的一个后进先出的容器.' 1.stack的定义 //要使用stack,应先添加头文件#include &l ...
- STL priority_queue 常见用法详解
<算法笔记>学习笔记 priority_queue 常见用法详解 //priority_queue又称优先队列,其底层时用堆来实现的. //在优先队列中,队首元素一定是当前队列中优先级最高 ...
- STL queue 常见用法详解
<算法笔记>学习笔记 queue 常见用法详解 queue翻译为队列,在STL中主要则是实现了一个先进先出的容器. 1. queue 的定义 //要使用queue,应先添加头文件#incl ...
- STL map 常见用法详解
<算法笔记>学习笔记 map 常见用法详解 map翻译为映射,也是常用的STL容器 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map 的定义 / ...
- STL set 常见用法详解
<算法笔记>学习笔记 set 常见用法详解 set是一个内部自动有序且不含重复元素的容器 1. set 的定义 //单独定义一个set set<typename> name: ...
- STL vector常见用法详解
<算法笔记>中摘取 vector常见用法详解 1. vector的定义 vector<typename> name; //typename可以是任何基本类型,例如int, do ...
- STL string 常见用法详解
string 常见用法详解 1. string 的定义 //定义string的方式跟基本数据类型相同,只需要在string后跟上变量名即可 string str; //如果要初始化,可以直接给stri ...
- C++标准模板库(STL)——queue常见用法详解
queue的定义 queue<typename> name; queue容器内元素的访问 由于队列本身就是一种先进先出的限制性数据结构,因此在STL中只能通过front()来访问队首元素, ...
- C++标准模板库(STL)——set常见用法详解
set的定义 set<typename> name; typename可以是任何基本类型,如int.double.char.结构体等,也可以是STL标准容器,如vector.set.que ...
随机推荐
- ie11 div不显示背景颜色解决方案
我的一个场景就是,一个空的div,但是想加个背景颜色,方案就是在div加个空content,利用before属性加上背景<div class="hilan"></ ...
- js中的DOM对象和jQuery对象的比较
1. 二者的不同之处: 通过jQuery获取的元素是一个数组, 数组中包含着原生JS中的DOM对象. 例如, 针对下面的一个div结构: <div id="Box">& ...
- matlab 计算灰度图像的一阶矩、二阶矩、三阶矩
一阶矩,定义了每个颜色分量的平均强度 二阶矩,反映待测区域颜色方差,即不均匀性 三阶矩,定义了颜色分量的偏斜度,即颜色的不对称性 close all;clear all;clc; ...
- OUC_Summer Training_ DIV2_#14 724
又落下好多题解啊...先把今天的写上好了. A - Snow Footprints Time Limit:1000MS Memory Limit:262144KB 64bit IO F ...
- redis常见7种使用场景
一,简单字符串缓存实例 $redis->connect('127.0.0.1', 6379); $strCacheKey = 'Test_bihu'; //SET 应用 $arrCacheDat ...
- window 定时任务小项目,每秒钟,每分钟访问url
个人百度网盘中 链接: https://pan.baidu.com/s/15sK2H-OtrAkAYcXjsxwihA 提取码: awv3 复制这段内容后打开百度网盘手机App,操作更方便哦
- 微PE:装机不求人,教你制作最纯净的PE安装系统
https://www.jianshu.com/p/50fd699ea916 超好用的PE工具,免费.纯净.无广告,装系统必备! https://www.jianshu.com/p/fecf090b2 ...
- Mysql查询某字段重复值并删除重复值
1.查询重复值: select code,count(*) as count from hospital group by code having count>1; 该语句查询code重复值大于 ...
- js获取后台传给前台的值
1.后台传给前台的方法 String rulemodeid=req.getParameter("rulemodeid"); req.setAttribute("rulem ...
- Android数据存储的方式
1. 内部存储 * 路径: /data/data/包名/ * cache用于存储临时文件,系统内存不足时,清除缓存数据 * files用于存储重要的文件,要用户手动在应用程序列表清 ...