最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

?pair的簡介

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

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

#include<utility>

類模板

template<class T1,class T2> struct pair

參數(shù):T1為第一個元素的數(shù)據(jù)類型,T2為第二個元素的數(shù)據(jù)類型。
功能:pair將一對值(T1和T2)整合為一組數(shù)據(jù),這一對值的數(shù)據(jù)類型可以相同也可以不相同(由我們自己指定),訪問pair中的兩個數(shù)據(jù)的值可以通過變量名.first變量名.second來實(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的定義及初始化

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

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

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

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

?typedef簡化pair

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

//typedef簡化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對象。 另一個使用的方面就是pair可以接受隱式的類型轉(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);
第一個的second變量是float類型
而make_pair函數(shù)會將second變量都轉(zhuǎn)換成double類型。

?pair的真題鞏固

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

下方為題目鏈接?。。。。。。。?/p>

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

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

本題就請你編寫程序,檢查任意一張時間表,找出其中沒寫出來的時間段。

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

hh:mm:ss - hh:mm:ss

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

輸出格式:
按照時間順序列出時間表中沒有出現(xiàn)的區(qū)間,每個區(qū)間占一行,格式與輸入相同。題目保證至少存在一個區(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;
	}
}

?寫在最后

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

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

相關(guān)文章

  • C++產(chǎn)生隨機(jī)數(shù)的實(shí)現(xiàn)代碼

    C++產(chǎn)生隨機(jī)數(shù)的實(shí)現(xiàn)代碼

    本篇文章是對C++中產(chǎn)生隨機(jī)數(shù)的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中vector的用法實(shí)例解析

    C++中vector的用法實(shí)例解析

    這篇文章主要介紹了C++中vector的用法,詳細(xì)描述了vector的各種常見的用法及注意事項(xiàng),需要的朋友可以參考下
    2014-08-08
  • 查看C++ 預(yù)定義宏的方法

    查看C++ 預(yù)定義宏的方法

    本文主要介紹了查看C++ 預(yù)定義宏的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-05-05
  • C 語言基礎(chǔ)教程(我的C之旅開始了)[九]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[九]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[九]...
    2007-02-02
  • Qt界面中滑動條的實(shí)現(xiàn)方式

    Qt界面中滑動條的實(shí)現(xiàn)方式

    這篇文章主要介紹了Qt界面中滑動條的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言求兩個字符串的最長公共子串

    C語言求兩個字符串的最長公共子串

    這篇文章主要介紹了C語言求兩個字符串的最長公共子串,實(shí)例分析了C語言操作字符串的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • C++詳解如何實(shí)現(xiàn)動態(tài)數(shù)組

    C++詳解如何實(shí)現(xiàn)動態(tài)數(shù)組

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)動態(tài)數(shù)組的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言清楚了解指針的使用

    C語言清楚了解指針的使用

    C語言這門課程在計算機(jī)的基礎(chǔ)教學(xué)中一直占有比較重要的地位,然而要想突破C語言的學(xué)習(xí),對指針的掌握是非常重要的,本文將具體針對指針的基礎(chǔ)做詳盡的介紹
    2022-06-06
  • C++17使用折疊表達(dá)式實(shí)現(xiàn)一個IsAllTrue函數(shù)的過程

    C++17使用折疊表達(dá)式實(shí)現(xiàn)一個IsAllTrue函數(shù)的過程

    本文介紹了利用C++17特性實(shí)現(xiàn)IsAllTrue函數(shù)的方法,詳細(xì)講解了從基于初始化列表的初級版本到使用折疊表達(dá)式和類型萃取的高級優(yōu)化版本,需要的朋友參考下吧
    2024-09-09
  • C 語言基礎(chǔ)之初識 C 語言常量

    C 語言基礎(chǔ)之初識 C 語言常量

    C語言中的常量分為以下幾種:字面常量、const修飾的常變量、#define定義的標(biāo)識符常量等,下面我們將詳細(xì)對C語言這幾個常量做介紹,感興趣的小伙伴可以參考一下
    2021-09-09

最新評論

甘南县| 台南县| 虎林市| 北安市| 扬中市| 镇安县| 霞浦县| 上林县| 万宁市| 苏尼特右旗| 凤台县| 兴业县| 酒泉市| 伽师县| 通河县| 桐乡市| 武宁县| 县级市| 临湘市| 天祝| 堆龙德庆县| 普宁市| 安顺市| 宁陕县| 石门县| 白银市| 利辛县| 大姚县| 中牟县| 安西县| 云和县| 肃北| 潜江市| 梅河口市| 东至县| 电白县| 分宜县| 菏泽市| 临沂市| 德昌县| 鲜城|