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 ...
随机推荐
- 使用ImageProcessor、CodeCarvings.Piczard组件生成缩略图和添加水印
技术栈: 1.ImageProcessor(专业图像处理,不能合成水印,NetCore中有它的升级版ImageSharp目前是预览包) 2.CodeCarvings.Piczard(缩略图,水印都能搞 ...
- 利用Python+Redis实现分布式锁
class MyDLock(object): def __init__(self, lockID,timeout): self.connection = redis.Redis(host=cfg.RE ...
- python获取最大值
python2 中获取int最大值 import sys print sys.maxint 但是在python3中,报错: AttributeError: module 'sys' has no at ...
- C#_类
1:访问修饰符 访问修饰符可以定义应用程序中类成员的作用域.和C++有一些不同,下面说明一下: public:访问不受限制,public成员可以被任何其他类访问. private:访问只限于包含该成员 ...
- Redis 4.x RCE 复现学习
攻击场景: 能够访问远程redis的端口(直接访问或者SSRF) 对redis服务器可以访问到的另一台服务器有控制权 实际上就是通过主从特性来 同步传输数据,同时利用模块加载来加载恶意的用来进行命令执 ...
- 使用create-react-app创建项目(二)——引入ant方法(一)
扩展项目(需要创建git默认文件) 具体步骤如下: a.git init b.git add . c.git commit -m "..." n ...
- 删除Linux系统多余的引导
问题: 电脑中安装了多个Linux系统,需要删除不用的Linux系统的引导 解决方法: open terminal: su - 切换root用户 cd /boot/ ls ... grub ...
- Qt VS MFC
最近用了一段时间Qt,觉得网上这篇文章讲述Qt与MFC之间的区别很到位,分享一下. ----------------------------------原文---------------------- ...
- Mac配置jdk以及maven
一 Mac配置JDK和Maven 1.安装成功jdk后 2.打开终端后,输入vim ~/.bash_profile 3.输入: export MAVEN_HOME=/usr/local/maven/a ...
- leetcode16 最接近的三数之和
做了几周的hard之后,这道题居然轻易就解出来了,稍微debug了一下就ac了,算是有了一丢丢提高把: 思路 这道题因为和三数之和很像,所以充分利用双指针的思想:先排序,然后再固定一个数i,i取值从[ ...