- 浏览: 208472 次
- 性别:
- 来自: 重庆
-
文章分类
最新评论
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 4696在多进程(线程)访问资源时,能够确保所有其他的进程(线程 ... -
匿名namespace的作用以及它与static的区别
2012-12-20 17:24 1865一。匿名namespace的作用 在C语言中,如果我们 ... -
C++类型萃取技术
2012-12-19 15:16 1157Traits技术可以用来获得一个 类型 的相关信息的。 ... -
数值压缩存储方法Varint
2012-12-19 14:35 881转自:http://www.cnblogs.com/smark ... -
TypeList
2012-12-19 13:49 1162转自:http://blog.csdn.n ... -
template <unsigned int N>
2012-12-19 11:51 1508详见:http://stackoverflow.com/ ... -
二维指针*(void **)的研究(uC/OS-II案例)
2012-12-19 22:20 3308原文 : 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 1353转自:http://blog.csdn.net ... -
结构体内变量相对便宜与list_entry()宏
2012-12-18 17:59 963#define list_entry(ptr, t ... -
声明与函数、函数指针---(*(void (*)( ) )0)( ) 解析
2012-12-18 17:33 1123概述 在很 ... -
c++模板(类型依赖)说明例子
2012-12-18 16:57 1171#include <iostream> # ... -
C++中三种new的用法
2012-12-18 16:44 1844我评价自己的C++水平还未入门的确不够准确,应该是远远未 ... -
C++,永久改变你写异常安全代码的方式(神奇的Loki::ScopeGuard)
2012-12-17 20:19 2528作者:Andrei Alexandrescu and P ... -
C++的explicit构造函数
2012-12-13 15:59 684按照默认规定,只有一个参数的构造函数也定义了一个隐式转换 ...
相关推荐
在C++中使用Pair类型,首先需要包含头文件`<utility>`,这个头文件中包含了Pair的定义和相关函数。定义Pair对象的基本语法如下: ```cpp pair, type2> pair_object; ``` 这里`type1`和`type2`是Pair对象中两个元素...
我们可以使用 pair 的构造函数也可以使用 make_pair 来生成我们需要的 pair。 make_pair 函数 make_pair 函数是一个模板函数,用于生成 pair 对象。其函数原型为:template , class T2> pair, T2> make_pair(T1 a, ...
myMap.insert(std::make_pair(3, "Three")); // 遍历map for (const auto &p : myMap) { std::cout , Value: " ; } // 查找元素 if (myMap.find(2) != myMap.end()) { std::cout [2] ; } else { std::...
在C++编程语言中,函数模板是一种强大的工具,它允许我们编写通用的代码,能够处理多种数据类型。本文将深入探讨如何使用C++函数模板来求解不同数据类型的极值,以此为基础,我们将分析给定的实例004——使用函数...
return std::make_pair(std::complex(realPart, imaginaryPart), std::complex(realPart, -imaginaryPart)); } } ``` 这个函数可以处理一元二次方程,并返回两个可能的解,包括实数解和复数解。对于一元三次和四...
`make_pair`函数是创建`pair`对象的另一种方式,它可以自动推断元素类型并创建`pair`,比如: ```cpp pair, string> bookInfo = make_pair(1990, "The Catcher in the Rye"); ``` `std::pair`的灵活性和便利性使得它...
- **便利函数make_pair()**:解释了如何使用`make_pair()`函数轻松创建`pair`对象。 #### 核心知识点详解 ##### 命名空间std - **定义**:`std`是C++标准库中使用的全局命名空间。所有标准库组件都位于此命名空间...
reactionData.insert(std::make_pair("mon2", 2)); ``` 2. 访问元素:通过键可以直接访问对应的值。 ```cpp int mon2Moles = reactionData["mon2"]; ``` 3. 遍历元素:使用迭代器遍历`map`的所有元素。 ```cpp for ...
compressed.push_back(std::make_pair(current_char, count)); current_char = input[i]; count = 1; } } // 添加最后一个元素 compressed.push_back(std::make_pair(current_char, count)); return ...
- **函数**:`make_pair`用于创建一个`pair`对象,例如`auto p = make_pair(1, "one");`。 ##### 2.3 示例代码解析 在题目1067--Ugly Numbers中,`pair`被用来表示推演树上的节点,其中`first`表示节点的值,`...
data.push_back(std::make_pair(x, y)); } // 绘制图形 plot ; for (const auto& point : data) { plot ; } plot ; return 0; } ``` 这个程序首先生成了-π到π之间0.01弧度间隔的数据点,然后用gnuplot...
`make_pair()`是一个非常实用的辅助函数,它可以方便地创建一个`std::pair`对象。例如: ```cpp #include using namespace std; int main() { pair, string> p = make_pair(1, "one"); return 0; } ``` 通过...
indices.push_back(std::make_pair(i, j)); } } } return indices; } int main() { cv::Mat matrix(5, 5, CV_64F); // 初始化矩阵... // 使用find函数 std::vector<std::pair, int>> foundIndices = find...
Utilities(工具)类别中包含了各种独立的通用功能,比如对数据结构中的键值对进行操作的pair,以及方便创建pair对象的make_pair()函数。pair是STL中非常实用的一个功能,它允许程序员将一对值封装成一个单一的对象...
return std::make_pair(minPrime, maxPrime); } ``` 在这个函数中,我们使用了`std::pair`来存储结果,`std::min`和`std::max`函数分别用于更新最小和最大素数。注意,数组`nums`需要预先填充好待检查的数字。 ...
使用 `std::make_pair` 函数可以从现有的两个数据构造一个新的 `pair` 对象: ```cpp int a = 8; string m = "James"; pair, string> newone = make_pair(a, m); ``` **三、编程实践** 下面是一个简单的...
myMap.insert(std::make_pair(1, "One")); myMap.emplace(2, "Two"); ``` ### 删除元素 删除元素主要通过`erase`函数,可以按键值或迭代器进行操作。 ```cpp myMap.erase(1); // 删除键为1的元素 auto it = myMap...