- 浏览: 202746 次
- 性别:
- 来自: 重庆
文章分类
最新评论
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。
发表评论
-
C++的原子操作
2012-12-20 17:43 4658在多进程(线程)访问资源时,能够确保所有其他的进程(线程 ... -
匿名namespace的作用以及它与static的区别
2012-12-20 17:24 1771一。匿名namespace的作用 在C语言中,如果我们 ... -
C++类型萃取技术
2012-12-19 15:16 1117Traits技术可以用来获得一个 类型 的相关信息的。 ... -
数值压缩存储方法Varint
2012-12-19 14:35 817转自:http://www.cnblogs.com/smark ... -
TypeList
2012-12-19 13:49 1120转自:http://blog.csdn.n ... -
template <unsigned int N>
2012-12-19 11:51 1466详见:http://stackoverflow.com/ ... -
二维指针*(void **)的研究(uC/OS-II案例)
2012-12-19 22:20 3259原文 : http://blog.csdn ... -
多级指针和链表
2012-12-18 22:28 0如果看到一个声明:t ... -
理解*(void**)b
2012-12-18 22:03 0#include <stdio.h> ... -
STL标准库:Allocator能做什么
2012-12-18 20:10 0The Standard Librarian: Wha ... -
三种的allocator实现源代码的对比
2012-12-18 19:55 1286转自:http://blog.csdn.net ... -
结构体内变量相对便宜与list_entry()宏
2012-12-18 17:59 906#define list_entry(ptr, t ... -
声明与函数、函数指针---(*(void (*)( ) )0)( ) 解析
2012-12-18 17:33 1083概述 在很 ... -
c++模板(类型依赖)说明例子
2012-12-18 16:57 1131#include <iostream> # ... -
C++中三种new的用法
2012-12-18 16:44 1816我评价自己的C++水平还未入门的确不够准确,应该是远远未 ... -
C++,永久改变你写异常安全代码的方式(神奇的Loki::ScopeGuard)
2012-12-17 20:19 2483作者:Andrei Alexandrescu and P ... -
C++的explicit构造函数
2012-12-13 15:59 626按照默认规定,只有一个参数的构造函数也定义了一个隐式转换 ...
相关推荐
C++函数速查手册,CHM格式。包含了几乎所有C++的函数
C++函数库电子手册,详细讲解了c++的函数应用
模仿 BASIC 函数的某些 C 语言函数
C++__access和_waccess的使用方法 概述 头文件: 判断文件的访问权限
函数solve用于求解一般代数方程的根,函数desolve用以求解线性常微分方程,有5个源码实例
C++_Unicode_SBCS函数对照表,给出了char TCHAR对应的字符操作函数对应表,可轻松快速进行unicode下的开发工作
好用的C++定时器,不用使用static函数
C++矩阵库_C++调用矩阵_矩阵函数库_源码
用C语言编写的加窗函数, hanning窗,实现信号的加窗
C++_虚函数表解析 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这...
很好用的!C_C++函数手册C_C++函数手册C_C++函数手册C_C++函数手册C_C++函数手册
用C实现exp函数
本例 在C++条件下实现了 matlab 中smooth函数的移动平滑算法!实测与matlab效果相同!
编写input_data函数、测试input_data函数
C++ 文件查找 在C++中我们要如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数。这些函数和结构体在的头文件中,结构体为struct _finddata_t ,函数为_findfirst、_findnext和_fineclose。具体如何...
C_C++函数符号生成规则(函数名的修饰);C++ 函数重载.pdf
C++和C语言的函数库查询手册。方便查询各函数功能。
c++builder函数大全 提供c++builder函数的详细说明和范例
C语言的库函数 详细讲解常用库函数,包括函数格式,函数引用所需头文件,函数用法,函数实例。