首页 > c++ make_pairpair

c++ make_pairpair

pair 的用法

std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。 

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

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

pair被定义为struct,因此可直接存取pair中的个别值.。 

两个pairs互相比较时, 第一个元素正具有较高的优先级.。

make_pair的用法

无需写出型别, 就可以生成一个pair对象 

例: 

std::make_pair(42, '@'); 

而不必费力写成: 

std::pair(42, '@')

当有必要对一个接受pair参数的函数传递两个值时, make_pair()尤其显得方便, 

void f(std::pair);

void foo{ 

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

}

pair的应用

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

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(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 inline 

pair
second> make_pair( 

const first& _X, 

const second& _Y 

)


// 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  
#include using namespace std; 
/* STL pair data type containing int and float 
*/typedef struct pair 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

更多相关:

  • 比较详细的教程参见以前的博文 http://blog.csdn.net/tao_627/article/details/60957521 这里只给出简略步骤,没有截图,自始至终使用root操作 目前最新的源码地址 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/...

  • 继续翻译 5.7.4 The `--print-directory' Option ------------------------------------If you use several levels of recursive `make' invocations, the `-w' or `--print-directory...

  • 1、 make 时钟错误 make: Warning: File `Makefile' has modification time 4.6e+07 s in the future make: 警告:检测到时钟错误。您的创建可能是不完整的。 解决方法:运行下列命令再makefind . -type f -exec touch {} ;...

  • 现在制作个人网页越来越流行,你会发现很多设计师、媒体人、职场人都建立了自己的网站,用来积累粉丝、展示作品、或者找工作。那么不懂技术知识、也没有太多资金的学生,可以建立自己的网站吗?当然也是可以的!其实个人网站建立的原理都差不多,不懂技术的情况下,可以使用自助建站系统,快速生成个人网站。个人网页制作教程如下:进入「上线了」官网,注册账号...

  • 在plugin.config中添加 stats_over_http.so 然后重启服务器,在浏览器中输入下面的地址查询 http://host:port/_stats 这里host是ATS所在的hostname或是ip,port就是侦听http连接的端口,按照配置我这里分别是10.10.110.162和8081 http:/...

  • 改动信息 详情可以查看ceph官网nautilus Dashboard功能 增加的新功能 支持多用户使用SSO的用户验证模式支持审计模式新的登录页,可以展示更多的集群健康指标使用swagger api的rest api文档 增加的新的管理特性 对于OSD的管理(将osd标记为down,out,修改osd的config ,恢复...

  • 1.Proteus中添加组件后双击引脚可以快速生成一个最近的端口。 2.按A调出设置界面 3.在String中写:net=H#,"H"可以换成自定义前缀。count为起始值,increment为增量。 4.依次点击想要编号的引脚。 转载于:https://www.cnblogs.com/viaduct/p/5842429.html...

  • 1.Goto Anything-快速查找(ctrl + P)   输入@+函数名可以快速找到函数输入#+文本可以快速进行文件内文本匹配2.命令模式Ctrl+Shift+P:打开命令面板    Ctrl+P:搜索项目中的文件   Ctrl+W:关闭当前打开文件  Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V:粘贴...