国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++中pair用法

這篇具有很好參考價值的文章主要介紹了C++中pair用法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

博主簡介:Hello大家好呀,我是陳童學(xué),一個與你一樣正在慢慢前行的人。
博主主頁:@陳童學(xué)哦
所屬專欄:C++STL

C++中pair用法

前言:Hello各位小伙伴們好!歡迎來到本專欄C++STL的學(xué)習(xí),本專欄旨在幫助大家了解并熟悉使用C++中的STL,C++中的STL(標(biāo)準(zhǔn)模板庫)是相當(dāng)好用的,??????所以大家趕緊訂閱一起學(xué)起來叭!那么話不多說接下來就進(jìn)入本文C++中pair的學(xué)習(xí)。

?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è)計(jì)天梯賽-練習(xí)集的一道L2二階題目,難度不大,在學(xué)完本文后正好合適拿來給大家練練手!
下方為題目鏈接?。。。。。。。?br>--------------------L2-042 老板的作息表--------------------
C++中pair用法
新浪微博上有人發(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é)束啦,希望本文可以幫助到各位有需要的小伙伴們喔,也希望各位小伙伴們不要吝惜手里的三連哦!??????

?? 回頭看,輕舟已過萬重山,向前看,前路漫漫亦漫漫。

??????那么我們下期再見!拜拜ヾ(?ω?`)o
C++中pair用法文章來源地址http://www.zghlxwxcb.cn/news/detail-456043.html

到了這里,關(guān)于C++中pair用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 探秘C++中的神奇組合:std--pair的魅力之旅

    在C++編程中,我們常常會遇到需要將兩個相關(guān)的數(shù)據(jù)元素組合在一起的情況。為了滿足這一需求,C++標(biāo)準(zhǔn)庫提供了一個名為std::pair的實(shí)用工具,可以將兩個數(shù)據(jù)元素組合成一個對象。std::pair不僅易于使用,而且在實(shí)際編程中有著廣泛的應(yīng)用。 本文將詳細(xì)介紹std::pair的定義、基

    2023年04月16日
    瀏覽(18)
  • C++進(jìn)階:詳細(xì)講解容器set與map(pair、multiset、multimap)

    C++進(jìn)階:詳細(xì)講解容器set與map(pair、multiset、multimap)

    C++進(jìn)階:詳細(xì)講解容器set與map(pair、multiset、multimap) 上次介紹了搜索二叉樹:C++進(jìn)階:二叉搜索樹介紹、模擬實(shí)現(xiàn)(遞歸迭代兩版本)及其應(yīng)用 為了介紹后面的AVLTree和紅黑樹,我們要進(jìn)行一些鋪墊,就是set與map的介紹啦 關(guān)聯(lián)式容器和序列式容器是 C++ 中兩種不同的容器類

    2024年04月12日
    瀏覽(72)
  • C++ //練習(xí) 11.12 編寫程序,讀入string和int的序列,將每個string和int存入一個pair中,pair保存在一個vector中。

    C++ //練習(xí) 11.12 編寫程序,讀入string和int的序列,將每個string和int存入一個pair中,pair保存在一個vector中。

    練習(xí) 11.12 編寫程序,讀入string和int的序列,將每個string和int存入一個pair中,pair保存在一個vector中。 環(huán)境:Linux Ubuntu(云服務(wù)器) 工具:vim ? 代碼塊 運(yùn)行結(jié)果顯示如下

    2024年04月10日
    瀏覽(21)
  • pair 是 C++ 標(biāo)準(zhǔn)庫中的一個模板類,用于存儲兩個對象的組合

    pair 是 C++ 標(biāo)準(zhǔn)庫中的一個模板類,用于存儲兩個對象的組合。它位于 utility 頭文件中。 pair 類的定義如下: pair 類有兩個公共成員變量: first 和 second ,分別用于存儲兩個對象。成員變量的類型可以是任意類型,包括內(nèi)置類型、自定義類型和指針類型等。 以下是一個使用

    2024年02月09日
    瀏覽(25)
  • 【C++高階(二)】熟悉STL中的map和set --了解KV模型和pair結(jié)構(gòu)

    【C++高階(二)】熟悉STL中的map和set --了解KV模型和pair結(jié)構(gòu)

    ??博主CSDN主頁:杭電碼農(nóng)-NEO?? ? ?專欄分類:C++從入門到精通? ? ??代碼倉庫:NEO的學(xué)習(xí)日記?? ? ??關(guān)注我??帶你學(xué)習(xí)C++ ? ???? 在學(xué)習(xí)了二叉搜索樹后,現(xiàn)在 就可以來學(xué)習(xí)map和set了,雖然 它們的底層是紅黑樹結(jié)構(gòu),但是紅黑樹 的本質(zhì)也是一顆二叉搜索樹! 本質(zhì)重點(diǎn): 本

    2024年02月05日
    瀏覽(47)
  • C++之map的emplace與pair插入鍵值對用例(一百七十四)

    C++之map的emplace與pair插入鍵值對用例(一百七十四)

    簡介: CSDN博客專家,專注Android/Linux系統(tǒng),分享多mic語音方案、音視頻、編解碼等技術(shù),與大家一起成長! 優(yōu)質(zhì)專欄: Audio工程師進(jìn)階系列 【 原創(chuàng)干貨持續(xù)更新中…… 】?? 人生格言: 人生從來沒有捷徑,只有行動才是治療恐懼和懶惰的唯一良藥. 更多原創(chuàng),歡迎關(guān)注:An

    2024年02月12日
    瀏覽(21)
  • C++之std::pair<uint64_t, size_t>應(yīng)用實(shí)例(一百七十七)

    C++之std::pair<uint64_t, size_t>應(yīng)用實(shí)例(一百七十七)

    簡介: CSDN博客專家,專注Android/Linux系統(tǒng),分享多mic語音方案、音視頻、編解碼等技術(shù),與大家一起成長! 優(yōu)質(zhì)專欄: Audio工程師進(jìn)階系列 【 原創(chuàng)干貨持續(xù)更新中…… 】?? 人生格言: 人生從來沒有捷徑,只有行動才是治療恐懼和懶惰的唯一良藥. 更多原創(chuàng),歡迎關(guān)注:An

    2024年02月12日
    瀏覽(99)
  • ?【C++要笑著學(xué)】(31) 映射類:map 類 | pair 類型 (value_type) | map 的插入和遍歷 | map 的 operator[] | multimap 類

    ?【C++要笑著學(xué)】(31) 映射類:map 類 | pair 類型 (value_type) | map 的插入和遍歷 | map 的 operator[] | multimap 類

    ?? ?C++?表情包趣味教程????《C++要笑著學(xué)》 ?? 寫在前面: 本章我們繼續(xù)講解 STL,講解 STL 的 map 類。我們將詳細(xì)介紹 map 類的基礎(chǔ)概念,包括 pair 類型(value_type)的應(yīng)用和插入元素的方法。隨后,我們將深入研究 Map 的遍歷方式以及統(tǒng)計(jì)元素出現(xiàn)次數(shù)的幾種方式。最后我

    2024年02月03日
    瀏覽(24)
  • C++ //練習(xí) 11.14 擴(kuò)展你在11.2.1節(jié)練習(xí)(第378頁)中編寫的孩子姓到名的map,添加一個pair的vector,保存孩子的名和生日。

    C++ //練習(xí) 11.14 擴(kuò)展你在11.2.1節(jié)練習(xí)(第378頁)中編寫的孩子姓到名的map,添加一個pair的vector,保存孩子的名和生日。

    練習(xí) 11.14 擴(kuò)展你在11.2.1節(jié)練習(xí)(第378頁)中編寫的孩子姓到名的map,添加一個pair的vector,保存孩子的名和生日。 環(huán)境:Linux Ubuntu(云服務(wù)器) 工具:vim ? 代碼塊 運(yùn)行結(jié)果顯示如下

    2024年04月10日
    瀏覽(21)
  • 【C++】new用法詳解

    目錄 一.什么是new(What) 二.使用new的場景(When and Where) 三.如何使用new(How) 1. new是一個,用于開辟空間 ,開辟的空間在 堆 上,而一般聲明的變量存放在棧上; 2.new得到的是一段 空間的首地址 。所以一般需要 用指針來存放 這段地址 3.開辟的內(nèi)存空間需要記得

    2024年02月16日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包