C++STL pair代替二元结构体用来返回两组数据,且数据类型不一样
发布日期:2021-06-21 02:53:53 浏览次数:5 分类:技术文章

本文共 1533 字,大约阅读时间需要 5 分钟。

1 pair的应用

pair:两个元素绑在一起作为一个合成元素。可以看成是两个元素的结构体。

struct pair{    typeName1  first;    typeName2 second;};

pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。

如代码中使用

//一个string类型的变量和一个vector类型的变量组成一个SegReq作为参数写入vector传入函数typedef pair
> SegReq; void GetSegRequire(vector
& );
//格式pair
name;//例子pair
p;pair
("hello",1);

2.pair元素的访问

pair中只有两个元素,first和second。

pair
p; p.first="hello"; p.second=3; cout<
<<" "<
<

3、pair常用函数

比较操作==,!=,<,<,<=,>,>=

比较的时候,先比较first,first相等才比较second

pair
p1(1,2);pair
p2(2,3);pair
p3(1,4);if(p1
<=p3)printf("p1<=p3\n");if(p2

当然也可以使用引用形参返回额外信息

#include
#include
using namespace std; string::size_type FindChar(const string &s, char c, string::size_type &count){ auto ret = s.size(); //字符串总长,来控制循环,同时初始化初始化ret count = 0; for (decltype(ret) i = 0; i != s.size(); ++i) //decltype获取ret的类型 { if (s[i] == c) { if (ret == s.size()) //巧妙使用ret == s.size() 去控制字符C第一次出现,以后都不在统计 ret = i; ++count; //上边if只是第一次进去一次,之后都不在进 以后遇到C都只加count } } return ret;} void Test(){ string s1("lilililililililililili"); string::size_type Count = 0;; auto index = FindChar(s1,'l',Count); cout << "第一次出现的位置:" << index << endl; cout << "Count = " << Count << endl;} int main(){ Test(); return 0;}

 

转载地址:https://blog.csdn.net/konglingshneg/article/details/89919811 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:关于指针传递的实验
下一篇:关于vector,list,deque的比较(截图)

发表评论

最新留言

不错!
[***.144.177.141]2024年03月30日 10时33分58秒