欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中pair的用法總結(jié)

 更新時(shí)間:2023年05月23日 11:04:43   作者:陳童學(xué)哦  
pair是C++STL(標(biāo)準(zhǔn)模板庫(kù))中的一個(gè)現(xiàn)有容器,它將2個(gè)數(shù)據(jù)整合成一組數(shù)據(jù),當(dāng)我們類(lèi)似需求的時(shí)候就可以使用到pair,pair的本質(zhì)其實(shí)就是個(gè)結(jié)構(gòu)體,本文將詳細(xì)的給大家介紹pair用法,感興趣的同學(xué)可以參考閱讀

?pair的簡(jiǎn)介

pair是C++STL(標(biāo)準(zhǔn)模板庫(kù))中的一個(gè)現(xiàn)有容器,它將2個(gè)數(shù)據(jù)整合成一組數(shù)據(jù),當(dāng)我們類(lèi)似需求的時(shí)候就可以使用到pair啦!pair其實(shí)有點(diǎn)像Python中字典中的鍵值對(duì)(Key-Value),一個(gè)Key對(duì)應(yīng)著一個(gè)Value。pair的本質(zhì)其實(shí)就是個(gè)結(jié)構(gòu)體,它含有兩個(gè)成員變量first和second。因?yàn)槭褂玫氖莝truct不是class,所以在定義后是可以直接使用pair中的成員變量的。

其標(biāo)準(zhǔn)庫(kù)類(lèi)型–pair類(lèi)型定義在#include< utility > 頭文件中

#include<utility>

類(lèi)模板

template<class T1,class T2> struct pair

參數(shù):T1為第一個(gè)元素的數(shù)據(jù)類(lèi)型,T2為第二個(gè)元素的數(shù)據(jù)類(lèi)型。
功能:pair將一對(duì)值(T1和T2)整合為一組數(shù)據(jù),這一對(duì)值的數(shù)據(jù)類(lèi)型可以相同也可以不相同(由我們自己指定),訪(fǎng)問(wèn)pair中的兩個(gè)數(shù)據(jù)的值可以通過(guò)變量名.first變量名.second來(lái)實(shí)現(xiàn)。
例:

#include<utility>
#include<iostream>
using namespace std;
int main()
{
	pair<string,string>s1;
	s1.first="ctx";
	s1.second="666";
	cout<<s1.first<<endl;
	cout<<s1.second<<endl;
	cout<<s1.first<<s1.second<<endl;
}

?pair的定義及初始化

在定義一個(gè)類(lèi)型為pair的對(duì)象時(shí)最主要的點(diǎn)就是在定義時(shí)需要提供兩個(gè)數(shù)據(jù)類(lèi)型,且兩個(gè)數(shù)據(jù)類(lèi)型不必相同。值得一提的是,pair中的數(shù)據(jù)類(lèi)型也可以是C++STL中的自帶的容器。

//定義
pair<int,int>p1;  //定義一個(gè)pair類(lèi)型的空對(duì)象p1,兩個(gè)元素的數(shù)據(jù)類(lèi)型都是int 
pair<int,double>p2; //定義一個(gè)pair類(lèi)型的空對(duì)象p2,一個(gè)元素的數(shù)據(jù)類(lèi)型都是int,另一個(gè)是double 
pair<double,string>p3; //定義一個(gè)pair類(lèi)型的空對(duì)象p3,一個(gè)元素的數(shù)據(jù)類(lèi)型都是double,另一個(gè)是string 
pair<string,vector<int> >p4;  //定義一個(gè)pair類(lèi)型的空對(duì)象p4,一個(gè)個(gè)元素的數(shù)據(jù)類(lèi)型都是string,另一個(gè)是vector容器 

當(dāng)然(of course),我們也可以在定義一個(gè)pair類(lèi)型的對(duì)象時(shí)對(duì)它進(jìn)行初始化賦值。

//初始化
pair<string,string> p1("ctx","666"); //定義一個(gè)pair類(lèi)型的對(duì)象p1并初始化,兩個(gè)元素的類(lèi)型都是string,初識(shí)默認(rèn)值為ctx和666 
pair<string,int> p2("ctx",18); //定義一個(gè)pair類(lèi)型的對(duì)象p3并初始化,兩個(gè)元素的類(lèi)型分別是string和int,初識(shí)默認(rèn)值為ctx和18
pair<string,int> p3(p2); //拷貝p2的值來(lái)初始化p3 
pair<string,int> p3=p2; //將p2的值賦值給p3

?typedef簡(jiǎn)化pair

pair容器的存在在一定程度上方便了我們,但是如果我們需要同時(shí)定義多個(gè)相同pair類(lèi)型的對(duì)象的時(shí)候正常定義的話(huà)是不是就顯得有些繁瑣了呢,所以我們可以使用到typedef關(guān)鍵字來(lái)簡(jiǎn)化定義。

//typedef簡(jiǎn)化pair的定義
typedef pair<string,string> replace;
 replace c1("ctx","666");
 replace c2("hhxx","ttxs");
 cout<<c1.first<<c1.second<<endl;
 cout<<c2.first<<c2.second<<endl;

?pair中的make_pair

一般make_pair都使用在需要pair做參數(shù)的位置,可以直接調(diào)用make_pair生成pair對(duì)象。 另一個(gè)使用的方面就是pair可以接受隱式的類(lèi)型轉(zhuǎn)換,這樣可以獲得更高的靈活度。

pair<int,double> p1;
p1 = make_pair(18,1.78);
cout<<p1.first<<" "<<p1.second<<endl;
//輸出為18 1.78
pair<int,double> p2;
int m = 18;
double n = 1.78;
p2 = make_pair(m,n);
cout<<p2.first<<" "<<p2.second<<endl;
//輸出為18 1.78
std::pair<int, float>(18, 1.78);
std::make_pair(18, 1.78);
第一個(gè)的second變量是float類(lèi)型
而make_pair函數(shù)會(huì)將second變量都轉(zhuǎn)換成double類(lèi)型。

?pair的真題鞏固

下面是PTA中團(tuán)體程序設(shè)計(jì)天梯賽-練習(xí)集的一道L2二階題目,難度不大,在學(xué)完本文后正好合適拿來(lái)給大家練練手!

下方為題目鏈接?。。。。。。?!

--------------------L2-042 老板的作息表--------------------

新浪微博上有人發(fā)了某老板的作息時(shí)間表,表示其每天 4:30 就起床了。但立刻有眼尖的網(wǎng)友問(wèn):這時(shí)間表不完整啊,早上九點(diǎn)到下午一點(diǎn)干啥了?

本題就請(qǐng)你編寫(xiě)程序,檢查任意一張時(shí)間表,找出其中沒(méi)寫(xiě)出來(lái)的時(shí)間段。

輸入格式:
輸入第一行給出一個(gè)正整數(shù) N,為作息表上列出的時(shí)間段的個(gè)數(shù)。隨后 N 行,每行給出一個(gè)時(shí)間段,格式為:

hh:mm:ss - hh:mm:ss

其中 hh、mm、ss 分別是兩位數(shù)表示的小時(shí)、分鐘、秒。第一個(gè)時(shí)間是開(kāi)始時(shí)間,第二個(gè)是結(jié)束時(shí)間。題目保證所有時(shí)間都在一天之內(nèi)(即從 00:00:00 到 23:59:59);每個(gè)區(qū)間間隔至少 1 秒;并且任意兩個(gè)給出的時(shí)間區(qū)間最多只在一個(gè)端點(diǎn)有重合,沒(méi)有區(qū)間重疊的情況。

輸出格式:
按照時(shí)間順序列出時(shí)間表中沒(méi)有出現(xiàn)的區(qū)間,每個(gè)區(qū)間占一行,格式與輸入相同。題目保證至少存在一個(gè)區(qū)間需要輸出。

輸入樣例:
8
13:00:00 - 18:00:00
00:00:00 - 01:00:05
08:00:00 - 09:00:00
07:10:59 - 08:00:00
01:00:05 - 04:30:00
06:30:00 - 07:10:58
05:30:00 - 06:30:00
18:00:00 - 19:00:00

輸出樣例:
04:30:00 - 05:30:00
07:10:58 - 07:10:59
09:00:00 - 13:00:00
19:00:00 - 23:59:59

AC代碼:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	vector<pair<string,string>>pr;
	string s1,s2;
	char c;
	for(int i=0;i<n;i++)
	{
		cin>>s1>>c>>s2;
		pr.push_back({s1,s2});
	}
	pr.push_back({"23:59:59",""});
	pr.push_back({"","00:00:00"});
	sort(pr.begin(),pr.end());
	for(int i=0;i<pr.size()-1;i++)
	{
		if(pr[i].second!=pr[i+1].first)
			cout<<pr[i].second<<" - "<<pr[i+1].first<<endl;
	}
}

?寫(xiě)在最后

OK本文的學(xué)習(xí)就到此結(jié)束啦,希望本文可以幫助到各位有需要的小伙伴們喔,也希望各位小伙伴們不要吝惜手里的三連哦!??????

以上就是C++中pair的用法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于C++ pair用法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++設(shè)計(jì)模式之建造者模式

    C++設(shè)計(jì)模式之建造者模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之建造者模式,一個(gè)復(fù)雜對(duì)象是由多個(gè)部件組成的,建造者模式是把復(fù)雜對(duì)象的創(chuàng)建和部件的創(chuàng)建分別開(kāi)來(lái),分別用Builder類(lèi)和Director類(lèi)來(lái)表示,需要的朋友可以參考下
    2014-09-09
  • C++?OpenCV實(shí)現(xiàn)物體尺寸測(cè)量示例詳解

    C++?OpenCV實(shí)現(xiàn)物體尺寸測(cè)量示例詳解

    本文主要介紹了利用OpenCV對(duì)物體的尺寸進(jìn)行測(cè)量,即先定位到待測(cè)物體的位置,然后測(cè)量物體的寬高。感興趣的同學(xué)可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2022-01-01
  • C++中的重載、覆蓋、隱藏介紹

    C++中的重載、覆蓋、隱藏介紹

    這篇文章主要介紹了C++中的重載、覆蓋、隱藏介紹,需要的朋友可以參考下
    2015-04-04
  • C語(yǔ)言JNI的動(dòng)態(tài)注冊(cè)詳解

    C語(yǔ)言JNI的動(dòng)態(tài)注冊(cè)詳解

    這篇文章主要介紹了JAVA JNI的動(dòng)態(tài)注冊(cè),這里提供簡(jiǎn)單實(shí)例代碼,需要的朋友可以參考下,小編覺(jué)得寫(xiě)的還不錯(cuò),希望能給你帶來(lái)幫助
    2021-08-08
  • C語(yǔ)言基礎(chǔ)解析之分支與循環(huán)語(yǔ)句

    C語(yǔ)言基礎(chǔ)解析之分支與循環(huán)語(yǔ)句

    C語(yǔ)言是一門(mén)結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,當(dāng)C語(yǔ)言用來(lái)描述生活中的事物時(shí),會(huì)用到三種結(jié)構(gòu):順序結(jié)構(gòu)(不去贅述),選擇結(jié)構(gòu)(對(duì)應(yīng)分支語(yǔ)句),循環(huán)結(jié)構(gòu)(對(duì)應(yīng)循環(huán)語(yǔ)句),分支語(yǔ)句:分支語(yǔ)句分為兩種,一種是if語(yǔ)句,一種是switch語(yǔ)句
    2021-09-09
  • Matlab計(jì)算變異函數(shù)并繪制經(jīng)驗(yàn)半方差圖詳解

    Matlab計(jì)算變異函數(shù)并繪制經(jīng)驗(yàn)半方差圖詳解

    這篇文章主要為大家詳細(xì)介紹了基于MATLAB求取空間數(shù)據(jù)的變異函數(shù),并繪制經(jīng)驗(yàn)半方差圖的方法。文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-04-04
  • C++中replace()函數(shù)使用方法匯總

    C++中replace()函數(shù)使用方法匯總

    這篇文章主要介紹了C++中replace()函數(shù)使用方法匯總,在這篇文章中為大家詳細(xì)介紹C++ replace()函數(shù)的各種應(yīng)用方式,希望朋友們可以從這里介紹的內(nèi)容充分掌握這一應(yīng)用技巧
    2015-11-11
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單彈跳球游戲

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單彈跳球游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單彈跳球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語(yǔ)言浮點(diǎn)函數(shù)中的modf和fmod詳解

    C語(yǔ)言浮點(diǎn)函數(shù)中的modf和fmod詳解

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言浮點(diǎn)函數(shù)中的modf和fmod,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C++?雙冒號(hào)::符號(hào)詳解

    C++?雙冒號(hào)::符號(hào)詳解

    本文主要介紹了C++?雙冒號(hào)::符號(hào)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評(píng)論