首页 > 知识百科 > 正文

C++中pair最原创

博主简介:大家好呀,我是陈童学,一个和你一样正在慢慢前行的人。
< strong>博主主页:@陈童学哦
专栏专栏:C++STL

< /blockquote>

前言:各位小伙伴们好!欢迎来到本专栏C++STL的学习,本专栏旨在帮助大家了解并熟悉使用C++中的STL,C++中的STL(标准模板库)是相当好用的,🍉🍉🍉所以赶紧订阅一起学起来哎!那么话不多说了,接下来就进入文章C++中对的学习了。

📢📢📢站点< /h4> ⭐pair的简介⭐pair的定义及初始化⭐typedef简化pair⭐pair中的make_pair⭐pair的真题巩固⭐写在最后

⭐pair的简介

< p>pair是C++STL(标准模板库)中的一个现有容器,会将2个数据整合成一组数据,当我们类似需求的时候就可以用到pair啦!pair其实有点像Python中字典中的键值对(Key-Value),一个Key对应一个Value。pair的本质其实就是个结构体,它包含两个成员变量first和second。因为使用struct不是class,所以在定义后是可以直接使用pair中的成员变量的。
其标准库类型——pair类型定义在#include头文件中

#include

类模板

模板<class T1 T2> struct < span class="1313-961f-061c-d1de token class-name">pair

参数:T1为第一个元素的数据类型,T2为第二个元素的数据类型。
功能:pair将一组值(T1和T2)整合为一组数据,该对值的数据类型可同样也可以不同(由我们自己指定),访问pair中的两个数据的值可以通过变量名.first变量名.second来实现。
示例:

#包括<实用程序>#包括< /span>使用 命名空间 std;int main(){<字符串,< /span>字符串>s1;s1第一个="ctx";s1.第二 = “666”;cout<<s1.first<<endl;cout<<s1.第二< <endl;cout<<s1第一个<<s1第二个<<endl;}

⭐对的定义及初始化

在定义一个类型为对的对象时创建的点就是在定义时需要提供数据两个类型,且两个数据类型不必相同。 值得一提的是,pair中的数据类型也可以是C++STL中自带的容器。

//定义pair<int,< /span>int>p1; //定义一个pair类型的空对象p1,两个元素的数据类型都是int pair<int,双精度> p2; //定义一对类型的空对象p2,一个元素的数据类型都是int,另一个是double pair<字符串>p3; //定义一个pair类型的空对象p3,一个元素的数据类型都是double,另一个是字符串<字符串向量 <int> >p4; //定义一个对类型的空对象p4,一个元素的数据类型都是string,另一个是vectorContainer 

当然(当然),我们也可以在定义一个pair类型的对象时对其进行初始化属性。

< code class="7033-80fc-5f4a-2ff6 prism language-cpp">//初始化pair<string,字符串> p1("ctx","666"); //定义一个pair类型的对象p1并初始化,两个元素的类型都是string,初识默认值为ctx和666 pair<字符串,int> p2("ctx" ,18); //定义一个pair类型的对象p3并初始化,两个元素的类型分别是string和int,初识默认值为ctx和18 <字符串int> p3(p2); //复制p2的值来初始化p3 pair<stringint> p3=< /span>p2; //将p2的值赋值给p3

⭐typedef 简化pair

pairContainer 的存在在一定的编程方便了我们,但是如果我们需要同时定义多个相同pair 类型的对象的时候正常定义的话就不是尺寸就有些繁琐了呢,所以我们可以使用typedef关键字来简化定义。

//typedef简化pair的定义typedefpair<st环字符串>替换;替换c1("ctx", "666"); 替换 < span class="6f88-3eb7-1313-961f token function">c2("hhxx","ttxs"); cout<<c1第一个<<c1< span class="7033-80fc-5f4a-2ff6 token punctuation">.第二个<<endl; cout<<c2.第一个< <c2.第二个<<endl;

⭐pair中的make_pair

一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象另一个使用的方面是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。

<int> p1;p1 = make_pair(18,1.78);cout<<p1首先<<" "<<p1.第二<<endl;< /span>//输出为18 1.78pair<int> p2;int m = 18; n = 1.78;p2 = make_pair(m,n);cout<<p2.第一个<<" "<<p2second<<endl;//输出为18 1.78std::<int 浮点>(18, 1.78);std::make_pair(18, 1.78);第一个第二个变量是float类型而make_pair函数将第二个变量都转换成double类型。

⭐对的真题巩固

下面是PTA中团程序设计天赛练习集的一个梯子L2二阶,难度不大,学完文章后正好合适拿来给大家练手!
下方为主题链接!!!!!!!!
--------------------L2-042 老板的作息表--- -----------------

新浪微博上有人发了某老板的作息时间表,表示其每天4:30就起床了。但马上有眼尖的网友问:这个时间表不完整啊,早上九点到下午一点干啥了?

本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。

输入格式:
输入第一行给出一个正整数N,为作息表上列出的时间段的个数。后面N行,每行给出一个时间段,格式为:

hh:mm:ss - hh:mm:ss

其中 hh、mm、ss 分别是这三个数字表示的小时、分钟、秒。个时间是开始时间,第二个时间是结束时间。保证所有时间都在一天之内(即从 00:00:00 到 23:59:59);每个区间间隔至少 1 秒;且任意两个给出的时间区间最多只在一个端点有重合,没有区间重叠的情况。

输出格式:
按照时间顺序列出时间表中没有出现的区间,每个区间占一行,格式与输入相同。保证题目至少存在一个区间需要输出。

输入样例:
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代码:

#包括 使用 命名空间 std;int main(){int n;cin>>n;向量<< /span>对<字符串,字符串>>pr ;字符串 s1,s2;char c;for(int i=0< span class="6f88-3eb7-1313-961f token punctuation">;i<n;i++){cin>>s1>>c>>s2;pr.push_back( {s1,s2});}prpush_back({"23:59:59",""});pr。< /span>push_back({"","00:00:00"});排序(pr.开始 ()pr结束()) ;对于(int i=0;< /span>i<pr大小()-1< /span>;i++){< !- -->if(pr[< /span>i].第二个!=pr< span class="7033-80fc-5f4a-2ff6 token punctuation">[i+1]首先)cout<<pr[i]第二个<<" - "<<pr[i+1].first<<endl;} }

⭐写在最后

OK文章的学习就到此结束啦,希望文章可以帮助到各位有需要的小伙伴们哦,也希望各位小伙伴们不要吝啬捐献双手的三连噢!❤️❤️❤️

💕 回头看,轻舟已过万重山,向前看,前路漫漫亦漫漫。

🍁🍁🍁那么我们下期再见!拜拜ヾ(•ω•`)o

C++中pair最原创由知识百科栏目发布,感谢您对的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++中pair最原创