两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1. 簡介

Pair表示“一對”的意思,pair將兩個數(shù)據(jù)合成一組數(shù)據(jù),在如下兩種變成情況中,我們更加常見與使用pair,第一是使用STL中的map(在上一節(jié)講過),對于map而言,key和value需要分開來進(jìn)行使用和聲明,使用pair可以合二為一(但是數(shù)據(jù)輸出時依舊要分離),第二則是當(dāng)我們的函數(shù)需要返回兩個數(shù)據(jù)的時候,可以使用pair。

Pair的實(shí)現(xiàn)是一個結(jié)構(gòu)體而不是一個類因此可以直接使用pair的成員變量。

總結(jié)一下:pair將一對值(可以有不同的數(shù)據(jù)類型)和為一個值

2. 相關(guān)頭文件

標(biāo)準(zhǔn)頭文件 #include<utility>。

但是筆者親測在編譯器可以不聲明這個頭文件而直接使用,貌似在C++中,pair被放入了std命名空間中了。

3. 初始化

格式為:

template <class T1, class T2> struct pair;

在現(xiàn)實(shí)情況中我們可以像類似于STL創(chuàng)建新容器一樣創(chuàng)建pair也可以直接使用,如下:

pair<int,int> p;
pair<int,int> p(10,20);

或者是:

map<char,int> m;
    m.insert(pair<char,int>('a',10));

明白了如何初始化,接下來談一下如何使用以及方法。

對與pair中的兩個元素,我們可以使用first和second來進(jìn)行訪問,顧名思義first返回第一個元素,而second返回第二個元素,如:

pair<int,int> p(10,20);
    cout<<p.first<<" "<<p.second<<endl;

4. make_pair:

函數(shù)原型template pair make_pair(T1 a, T2 b) { return pair(a, b); }

我們可以通過make_pair生成我們的所需要的pair,對于一般的pair而言,我們?nèi)绻枰獙ζ溥M(jìn)行賦值,則需要

    pair<int,int> p;
    p.first=10,p.second=20;

但如果我們使用make_pair方法,則可以變成如下內(nèi)容:

 pair<int,int> p;
    p=make_pair(10,20);

可以看見,使用make_pair不僅僅讓我們免去了對兩個變量進(jìn)行分開來的訪問賦值,同時make_pair也智能的接受變量的類型,不需要再度指定,也就是說,make_pair本身是接受隱式類型轉(zhuǎn)換的,比如定義的是一個int類型,使用make_pair傳入一個float類型的參數(shù),make_pair不會報錯,而是回自動的進(jìn)行一個類型轉(zhuǎn)換,將float變?yōu)閕nt,這樣可以獲得更高的靈活度,同時也會有一些小問題。

5.相關(guān)配套題目

1096題掃雷(注意,該題目為英文題)

與較難的BFS類型題目不同,本題不需要有BFS這樣的搜索思路,而且本題目涉及到一個重要的內(nèi)容,就是坐標(biāo),(x,y)在這類型的題目中,二維坐標(biāo)往往采用一對數(shù)據(jù)進(jìn)行表示,而本題目可以給自己增加要求,使用pair進(jìn)行坐標(biāo)的存儲運(yùn)算。

6. 舉例—函數(shù)多返回值:

#include<iostream>
#include<string>
#include<utility>
 
using namespace std;
 
pair<string,int> getClass(int id){
    return make_pair("DOTCPP!",id);
}
 
int main(int argc,char **argv){
    pair<string,int> a;
    a=getClass(10);
    cout<<a.first<<" "<<a.second<<endl;
    return 0;
}

輸出內(nèi)容:

DOTCPP! 10


作業(yè):
1096 Minesweeper
點(diǎn)贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時間)