C++中的pair使用詳解

pair是將2個數據組合成一組數據,當需要這樣的需求時就可以使用pair,如stl中的map就是將key和value放在一起來保存。另一個應用是,當一個函數需要返回2個數據的時候,可以選擇pair。 pair的實現是一個結構體,主要的兩個成員變量是first second 因為是使用struct不是class,所以可以直接使用pair的成員變量。

下面介紹下C++中的pair使用,內容如下所示:

pair基本用法

pair<string, int> p1("hello world", 233);
cout << p1.first << " " << p1.second;

p1 = make_pair("lala", 322);

pair 其他使用

重載pair的加減運算符

// 加法
template<class Ty1,class Ty2> 
inline const pair<Ty1,Ty2> operator+(const pair<Ty1, Ty2>&p1, const pair<Ty1, Ty2>&p2)
{
    pair<Ty1, Ty2> ret;
    ret.first = p1.first + p2.first;
    ret.second = p1.second + p2.second;
    return ret;
}

// 減法
template<class Ty1, class Ty2> 
inline const pair<Ty1, Ty2> operator-(const pair<Ty1, Ty2>&p1, const pair<Ty1, Ty2>&p2)
{
    pair<Ty1, Ty2> ret;
    ret.first = p1.first - p2.first;
    ret.second = p1.second - p2.second;
    return ret;
}

在vector中使用

// 初始化舉例
vector<pair<int, int>> dirs = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};

// 添加新元素幾種方式
// make_pair
dirs.push_back(make_pair(2,2));
// 初始化構造函數
dirs.push_back(pair<int, int>(2,2));
// 聚合初始化
dirs.push_back({2,2});
// emplace_back
dirs.emplace_back(2,2);

補充:下面看下c++的pair用法

在實際的工作中,經常需要用到pair的內容,然後每次呢,我都會由於忘記pair怎麼用的而需要去百度,我個人覺得很麻煩,於是想著自己總結一下,這樣,以後看自己寫的也可以更方便直接一點。
因為主要是寫給自己看的,所以,我將主要以代碼的形式來展示pair相關的用法:

#include <iostream>
using namespace std;
int main(){
    std::pair<std::string,int> pr;
    pr.first = "first";
    pr.second = 1;
    std::pair<std::string,int>pr2("second",2);
    std::pair<std::string,int>pr3 = std::make_pair("third",3);
    std::pair<std::string,std::pair<int,float>>pr4=std::make_pair("four",std::make_pair(1,1.0f));

    printf("%-8s:%d\n",pr.first.c_str(),pr.second);
    printf("%-8s:%d\n",pr2.first.c_str(),pr2.second);
    printf("%-8s:%d\n",pr3.first.c_str(),pr3.second);
    printf("%-8s:%d,%.3f\n",pr4.first.c_str(),pr4.second.first,pr4.second.second);

    return 0;
}

輸出結果如下:

first :1
second :2
third :3
four :1,1.000

到此這篇關於c++的pair使用詳解的文章就介紹到這瞭,更多相關c++ pair使用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: