Pair类模板
>Pair的实现是一个结构体而不是一个类<
1、标准头文件 #include<utility> 似乎无需引入该文件,在std命名空间内也有pair类型
2、格式为:template <class T1, class T2> struct pair;
在现实情况中我们可以像类似于STL创建新容器一样创建pair也可以直接使用,如下:
pair<int,int> p;
pair<int,int> p(,);
或者是:
map<char,int> m;
m.insert(pair<char,int>('a',));
3、访问方式
对与pair中的两个元素,我们可以使用first和second来进行访问,顾名思义first返回第一个元素,而second返回第二个元素,如:
pair<int,int> p(,);
cout<<p.first<<" "<<p.second<<endl;
4、make_pair:
函数原型template pair make_pair(T1 a, T2 b) { return pair(a, b); }
我们可以通过make_pair生成我们的所需要的pair,对于一般的pair而言,我们如果需要对其进行赋值,则需要:
pair<int,int> p;
p.first=,p.second=;
但如果我们使用make_pair方法,则可以变成如下内容:
pair<int,int> p;
p=make_pair(,);
make_pair本身是接受隐式类型转换的,比如定义的是一个int类型,使用make_pair传入一个float类型的参数,make_pair不会报错,而是回自动的进行一个类型转换,将float变为int,这样可以获得更高的灵活度,同时也会有一些小问题。
5、pair类型实现函数多个返回值
#include<iostream>
#include<string>
#include<utility> using namespace std; pair<string,int> getClass(int id){
return make_pair("DOTCPP!",id);
} int main(int argc,char **argv){
pair<string,int> a;
a=getClass();
cout<<a.first<<" "<<a.second<<endl;
return ;
}
输出为:DOTCPP! 10
6、比较方式
pair有内置的比较方式,对于运算符<的规则是:先比较first元素,当first相等时则比较second元素
OK
Pair类模板的更多相关文章
- 4.1 pair类模板
在学习关联容器之前,首先先要了解一下STL中的pair类模板,因为关联容器的一些成员函数返回值都是pair对象,而且map 和multimap中的元素都是pair对象. 1)pair类模板定义 pai ...
- c++ 中pair类模板的用法详解
pair: 头文件:#include<utility> 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类 ...
- 初步C++类模板学习笔记
类模板 实现:在上课时间的定义给它的一个或多个参数,这些参数代表了不同的数据类型. -->抽象的类. 在调用类模板时, 指定參数, 由编 ...
- C++ 模板常见特性(函数模板、类模板)
背景 C++ 是很强大,有各种特性来提高代码的可重用性,有助于减少开发的代码量和工作量. C++ 提高代码的可重用性主要有两方面: 继承 模板 继承的特性我已在前面篇章写过了,本篇主要是说明「模板」的 ...
- 连分数(分数类模板) uva6875
//连分数(分数类模板) uva6875 // 题意:告诉你连分数的定义.求连分数,并逆向表示出来 // 思路:直接上分数类模板.要注意ai可以小于0 #include <iostream> ...
- C++17尝鲜:类模板中的模板参数自动推导
模板参数自动推导 在C++17之前,类模板构造器的模板参数是不能像函数模板的模板参数那样被自动推导的,比如我们无法写 std::pair a{1, "a"s}; // C++17 ...
- 《C++ Primer Plus》14.4 类模板 学习笔记
14.4.1 定义类模板下面以第10章的Stack类为基础来建立模板.原来的类声明如下:typedef unsigned long Item; class Stack{private: enum ...
- C++ 函数模板&类模板详解
在 C++ 中,模板分为函数模板和类模板两种.函数模板是用于生成函数的,类模板则是用于生成类的. 函数模板&模板函数 类模板&模板类 必须区分概念 函数模板是模板,模板函数时 ...
- C++ Templates (2.3 类模板的局部使用 Partial Usage of Class Templates)
返回完整目录 目录 2.3 类模板的局部使用 Partial Usage of Class Templates 2.3.1 Concepts 2.3 类模板的局部使用 Partial Usage of ...
随机推荐
- vs 中明明包含了头文件所在路径,但是却找不到头文件
vs基本不会出错,那么出错的只能是自己了. 哎,又被自己给蠢死了. 你可能在上面两个地方添加好了include 目录,但是却依然编译失败,失败的提示是找不到头文件所在路径,这是为什么呢. 很简单,因为 ...
- LeetCode 684. Redundant Connection 冗余连接(C++/Java)
题目: In this problem, a tree is an undirected graph that is connected and has no cycles. The given in ...
- php 关于php创建 json文件 和 对文件增删改查 示例
<?php //fopen($file,'w'); //打开文件/创建文件 //file_put_contents($file,$content)//写入文件 //file_get_conten ...
- SpringBoot嵌入式Servlet配置原理
SpringBoot嵌入式Servlet配置原理 SpringBoot修改服务器配置 配置文件方式方式修改,实际修改的是ServerProperties文件中的值 server.servlet.con ...
- stm32f407使用Keil uV5建立工程日志
目录结构 Common ——包括延时函数等公用函数 STM32F4_FWLIB ——固件库 Project ——UV5工程相关文件 Main ...
- 用命令提示符运行简单的Java程序报错
首先用记事本写一个最简单的Java代码,我把文件保存在桌面的HelloWorld文件夹中,这里将记事本的名称改为HelloWorld.java public class HelloWorld{ pub ...
- vue垂死挣扎--遇到的问题
1, 原生js监听浏览器后退及禁用返回 +. 涉及到的history的知识 2, watch监听路由变化
- 【React Native】某个页面禁用物理返回键
1.引入组件 import { BackHandler, } from 'react-native'; 2.添加监听 componentDidMount(): void { BackHandler.a ...
- SDRAM的引脚封装标准
SDRAM从发展到现在已经经历了五代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM,第五代DDR4 SDRAM.第一代SDRAM采 ...
- #《Essential C++》读书笔记# 第三章 泛型编程风格
基础知识 array与vector是连续存储空间,可以用指针的算术运算实现对容器的访问.list也是一个容器,不同的是,list的元素以一组指针相互链接(linked):前向(forward)指针指向 ...