C++ pair 和make_pair

#include <iostream>
using namespace std;

/**
    std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。
例如std::pair<int,float> 或者 std::pair<double,double>等。
pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。
初始化一个pair可以使用构造函数,也可以使用std::make_pair函数,make_pair函数的定义如下:
template pair make_pair(T1 a, T2 b) { return pair(a, b); }
    一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象。
另一个使用的方面就是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。但是这样会出现如下问题:
    例如有如下两个定义:
        std::pair<int, float>(1, 1.1);
        std::make_pair(1, 1.1);
其中第一个的second变量是float类型,而make_pair函数会将second变量都转换成double类型。
这个问题在编程是需要引起注意。
下面是一段pair与make_pair的例子程序:
*/
int main(int argc, char** argv)
{
    pair <string,double> product1 ("tomatoes",3.25);
    pair <string,double> product2;
    pair <string,double> product3;

    product2.first ="lightbulbs"; // type of first is string
    product2.second =0.99; // type of second is double

    product3 = make_pair ("shoes",20.0);

    cout <<"The price of "<< product1.first <<" is $"<< product1.second <<"\n";
    cout <<"The price of "<< product2.first <<" is $"<< product2.second <<"\n";
    cout <<"The price of "<< product3.first <<" is $"<< product3.second <<"\n";

    return 0;
}
 

原文地址:https://www.cnblogs.com/xxxsans/p/12641435.html

时间: 2024-08-27 10:35:38

C++ pair 和make_pair的相关文章

C++ map.insert: pair和make_pair区别

1 C++ map.insert: pair和make_pair区别 2 \********************************* 3 map<uint32_t, string> temp; 4 1. temp[1] = "template"; 5 2.temp.insert(pair<uint32_t, string>(1, "template")); 6 3.temp.insert(make_pair(1, "tem

c++中vector的pair与make_pair的使用,双关键字排序

#include <vector>#include <iostream>#include <algorithm>using namespace std;bool strict_weak_ordering(const pair<int,string> a, const pair<int,string> b){ return a.first > b.first;}//通过运算符重载,利用sort函数实现降序排列int main(){ vecto

STL之pair及其非成员函数make_pair()

std::pair是一个结构模板,提供了一种将两个异构对象存储为一个单元的方法. 定义于头文件 <utility> template< class T1, class T2 > struct pair; 成员类型 Definition   成员对象 Type first_type T1         First T1 second_type T2   Second T2 1.定义(构造): pair<int, double> p1; //使用默认构造函数 pair&l

C++中的pair,make_pair学习

std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型.例如std::pair<int,float> 或者 std::pair<double,double>等.pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用.初始化一个pair可以使用构造函数,也可以使用std::make_pair函数,make_pair函数的定义如下: template pair make_pair(T1 a, T2 b) {

STL之pair类型详细分析

pair定义于头文件utility中,主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型. pair类型提供的操作: pair<T1,T2> p1; pair<T1,T2> p1(v1,v2); make_pair(v1,v2); p1 < p2; p1 == p2; p.first; p.second; 1.创建和初始化: pair<string,string> name; pair<string,vector<int>&

STL的pair

Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化. pair赋值的方法: 1)创建时初始化:pair<string,double> fruit1("orange",4.5);//初始化 2)跟结构体赋值一样进行赋值: pa

[ZZ] C++ pair

Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化. pair<string, string> a("James", "Joy"); 也可以像上面一样在定义的时候直接对其初始化. 由于pair类型的使用比

make_pair

Utilities <utility> 由短小精干的类和函数构成,执行最一般性的工作. 这些工具包括: general types 一些重要的C函数 numeric limits Pairs C++标准程序库中凡是"必须返回两个值"的函数, 也都会利用pair对象 class pair可以将两个值视为一个单元.容器类别map和multimap就是使用pairs来管理其健值/实值(key/va lue)的成对元素. pair被定义为struct,因此可直接存取pair中的个别

4.1 pair类模板

在学习关联容器之前,首先先要了解一下STL中的pair类模板,因为关联容器的一些成员函数返回值都是pair对象,而且map 和multimap中的元素都是pair对象. 1)pair类模板定义 pair实例化出来以后的类都有两个成员变量,一个是first,另一个是second. STL中还有一个make_pair()函数模板,可以返回一个pair模板对象.源码如下: template<class T1, class T2> pair<T1,T2>make_pair(T1 x, T2