做二手衣服的网站,孝感注册公司,沈阳核工业建设工程总公司网站,公司网站恶意评价目录
pair的定义和结构
示例
pair的嵌套
示例
pair自带排序规则
示例
代码示例 pair的定义和结构
在c中#xff0c;pair是一个模板类#xff0c;用于表示一对值的组合。它位于utility头文件中。pair类的定义如下#xff1a;
templateclass T1,class T2…目录
pair的定义和结构
示例
pair的嵌套
示例
pair自带排序规则
示例
代码示例 pair的定义和结构
在c中pair是一个模板类用于表示一对值的组合。它位于utility头文件中。pair类的定义如下
templateclass T1,class T2
struct pair{T1 first;T2 second;pair();pair(const T1 x,const T2 y);bool operator(const pair rhs)const;bool operator!(const pair rhs)const;
};
pair类模板有两个模板参数T1和T2分别表示第一个值和第二个值的类型。
pair类有两个成员变量first和second分别表示第一个值和第二个值。
pair类还有一些成员函数和特性例如默认构造函数、带参数的构造函数、比较运算符重载等。
使用pair类可以方便的将两个值组合在一起并进行传递、存储和操作。
例如可以将两个整数组合在一起作为函数的返回值或者将一对值存储在容器中。
示例
#includeiostream
#includeutility
using namespace std;
int main()
{pairint, doublep1(1, 3.14);pairchar, stringp2(a, hello);cout p1.first , p1.second endl;cout p2.first , p2.second endl;return 0;
}
输出结果
13.14
ahello
pair的嵌套
pair可以进行嵌套也就是说可以将一个pair对象作为另一个pair对象的成员。通过嵌套pair你可以方便地组合多个值并形成更复杂的数据结构。
例如你可以创建一个三维坐标系的点其中第1个维度由一个整数表示第2、3个维度由一个pair表示。
示例
#includeiostream
#includeutility
using namespace std;
int main()
{pairint, doublep1(1, 2);pairint, pairint, intp2(3, make_pair(4, 5));pairpairint, int, pairint, intp3(make_pair(6, 7), make_pair(8, 9));cout p1.first , p1.second endl;cout p2.first , p2.second.first , p2.second.second endl;cout p3.first.first , p3.first.second , p3.second.first , p3.second.second endl;return 0;
}
运行结果
1,2
3,4,5
6,7,8,9
pair自带排序规则
pair自带的排序规则是按照first成员进行升序排序。
如果first成员相等则按照second成员进行升序排序。
这意味着如果当你使用标准库中的排序算法如std::sort对包含pair对象的容器进行排序时会根据pair对象的first成员进行排序。
示例
#includeiostream
#includevector
#includealgorithm
#includeutility
using namespace std;
int main()
{vectorpairint, intvec;vec.push_back(make_pair(3, 2));vec.push_back(make_pair(1, 4));vec.push_back(make_pair(2, 1));sort(vec.begin(), vec.end());for (const auto i : vec){cout i.first , i.second endl;}return 0;
运行结果
1,4
2,1
3,2
代码示例
#includeiostream
#includevector
#includeutility
using namespace std;
//定义一个结构体表示一个人的信息
struct Person
{string name;int age;
};int main()
{//创建一个存储Person对象的向量vectorPersonpeople;//添加一些Person对象到向量中people.push_back({张三,25});people.push_back({李四,30});people.push_back({王五,20});//创建一个存储pair的向量每个pair包含一个Person对象和一个评分vectorpairPerson, intscores;//添加一些pair到向量中scores.push_back({ people[0],90 });scores.push_back({ people[1],85 });scores.push_back({ people[2],95 });//遍历pair向量并输出每个人的姓名、年龄和评分for (const auto pair : scores){cout Name: pair.first.name , Age: pair.first.age ,Score: pair.second endl;}return 0;
}
结果
Name:张三, Age:25,Score:90
Name:李四, Age:30,Score:85
Name:王五, Age:20,Score:95