【好记性不如烂笔头:在《C++ Templates》看到这个函数,发现正是前段时间写项目程序所要用到的,可惜当时还不知道有这个用法,当时是自己写了个结构体。。】
Utilities <utility> 
由短小精干的类和函数构成,执行最一般性的工作。 
这些工具包括: 
general types 
一些重要的C函数 
numeric limits

Pairs 
C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象 
class

pair可以将两个值视为一个单元。容器类别map和multimap就是使用pairs来管理其健值/实值(key/va

lue)的成对元素。 
pair被定义为struct,因此可直接存取pair中的个别值.

两个pairs互相比较时, 第一个元素正具有较高的优先级. 
例: 
namespace std{ 
template <class T1, class T2> 
bool operator< (const pair<T1, T2>&x, const pair<T1, T2>&y){ 
return x.first<y.first || ((y.first<x.first)&&x.second<y.second); 

}

make_pair():

无需写出型别, 就可以生成一个pair对象 
例: 
std::make_pair(42, '@'); 
而不必费力写成: 
std::pair<int, char>(42, '@')

当有必要对一个接受pair参数的函数传递两个值时, make_pair()尤其显得方便, 
void f(std::pair<int, const char*>);

void foo{ 
f(std::make_pair(42, '@')); //pass two values as pair 
}

1 pair的应用

pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。

2 make_pair函数

template pair make_pair(T1 a, T2 b) { return pair(a, b); }

很明显,我们可以使用pair的构造函数也可以使用make_pair来生成我们需要的pair。 一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象很方便,代码也很清晰。 另一个使用的方面就是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。灵活度也带来了一些问题如:

std::pair<int, float>(1, 1.1);

std::make_pair(1, 1.1);

是不同的,第一个就是float,而第2个会自己匹配成double。

make_pair (STL Samples)

Illustrates how to use the make_pair Standard Template Library (STL) function in Visual C++.

 
template<class first, class second> inline
pair<first,
second> make_pair(
const first& _X,
const second& _Y
)
 Remarks
Note:

The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.

The make_pair STL function creates a pair structure that contains two data elements of any type.

 Example
 
 

复制代码

// mkpair.cpp
// compile with: /EHsc
// Illustrates how to use the make_pair function.
//
// Functions: make_pair - creates an object pair containing two data
// elements of any type. #include <utility>
#include <iostream> using namespace std; /* STL pair data type containing int and float
*/ typedef struct pair<int,float> PAIR_IF; int main(void)
{
PAIR_IF pair1=make_pair(18,3.14f); cout << pair1.first << " " << pair1.second << endl;
pair1.first=10;
pair1.second=1.0f;
cout << pair1.first << " " << pair1.second << endl;
}
 Output
18  3.14
10 1
 Requirements

Header: <utility>
【内容摘自:http://hi.baidu.com/jrckkyy/blog/item/583c1bec1a44ca2e63d09f21.html】

【转】c++ make_pair函数使用的更多相关文章

  1. STL map详细用法和make_pair函数

    今天练习华为上机测试题,遇到了map的用法,看来博客http://blog.csdn.net/sprintfwater/article/details/8765034:感觉很详细,博主的其他内容也值得 ...

  2. make_pair

    Utilities <utility> 由短小精干的类和函数构成,执行最一般性的工作. 这些工具包括: general types 一些重要的C函数 numeric limits Pair ...

  3. make_pair() (STL)

    转载来的 Pairs C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象 class pair可以将两个值视为一个单元.容器类别map和multimap就是使用pairs来管理其 ...

  4. C++之pair与make_pair

    std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型. 例如std::pair<int,float> 或者 std::pair<double,d ...

  5. C++中的pair,make_pair学习

    std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型.例如std::pair<int,float> 或者 std::pair<double,do ...

  6. pair<>结构体模版的用法

    1.pair算是一个结构体模版,定义的时候是这样的: pair<T1,T2> P; 其中T1,T2可以是int,string,double,甚至是vector<>. 2.进行初 ...

  7. 4.1 pair类模板

    在学习关联容器之前,首先先要了解一下STL中的pair类模板,因为关联容器的一些成员函数返回值都是pair对象,而且map 和multimap中的元素都是pair对象. 1)pair类模板定义 pai ...

  8. C++pair类型

    标准库类型--pair类型定义在utility头文件中定义 本文地址:http://www.cnblogs.com/archimedes/p/cpp-pair.html,转载请注明源地址. 1.pai ...

  9. set和map和pair 转自ACdreamers

    set与map容器         分类:             C/C++              2013-08-25 19:21     560人阅读     评论(0)     收藏    ...

随机推荐

  1. Windows 操作系统与内核版本号

    Win10查询内部版本(内核版本)的方法:1.按下Win+R组合键启动“运行”窗口,输入“msconfig”并确定2.在“系统配置”窗口中点击“工具”标签,选择“关于Windows”一项后点击“启动” ...

  2. 全排列问题Ⅰ(Java实现)

    给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1 ...

  3. canvas功能函数

    封装一下常用的函数, 输入:通过一些固定的值,得到一个圆形,一个心形,一个波浪,一个涟漪,一个抛物线,一个自由弹起的过程. 返回:x,y坐标. 注意: (1)坐标轴的位置,有的在0,0有的可能不在. ...

  4. 第 3 章 镜像 - 019 - 使用公共 Registry

    保存和分发镜像的最直接方法就是使用 Docker Hub.https://hub.docker.com/ Docker Hub 是 Docker 公司维护的公共 Registry.用户可以将自己的镜像 ...

  5. change color

    关于DataGridView行和列的背景色-前景色设置 1.设定DataGridView全部单元格的Style   DataGridView内所有单元格的Style变更,可以使用DataGridVie ...

  6. vux 给元素动态添加css

    <template> <div class="jdtI" :style="{styleObj}"></div> </t ...

  7. VS Code行内样式提示插件

    打开vscode,在软件界面左下角找到“齿轮”标志并点击,在弹出的菜单中选择“设置”,把下面的代码添加到设置里. { "workbench.colorTheme": "C ...

  8. centos 7 源代码安装mysql5.6

    ###### mysql ######### 引言:这里选用mysql5.6版本,5.7版本编译时间需要几个小时. 编译安装环境: yum -y install make gcc-c++ cmake ...

  9. python记录_day08

    今日内容:文件操作 一.文件基本操作 f = open("文件路径和文件名", mode=" r", encoding="utf-8" ) ...

  10. (CCPC-Final 2018)K - Mr. Panda and Kakin

    题意:x是\([1e5,1e9]\)的随机数,p是小于x的最大素数,q是大于等于x的最小素数,\(n=pq\),\(c=f^{2^{30}+3}\mod{n}\),给n和c求f 题解:rsa解密,首先 ...