蓝桥杯基础知识6 pair
pair 的定义和结构:在C++中,pair是一个模板类,用于表示一对值的组合,头文件。
pair类 的定义:
templatestruct 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,分别表示第一个值 和 第二个值的类型;
有两个成员变量,fist 和 second,分别表示 第一个值 和 第二个值;。
pair 类有一些成员函数 和 特性,例如默认构造函数、带参数的构造函数、比较运算符重载等。
使用pair 类,可以方便地将两个值组合在一起,并进行传递、存储 和 操作。
#include#includeint main(){std::pair p1(1, 3.14);std::pair p2('a', "hello");std::cout << p1.first << "," << p1.second << std::endl;std::cout << p2.first << "," << p2.second << std::endl;return 0;}
创建两个pair 对象,分别包含不同类型的值,分别访问并输出对象 p1 、p2 的first 和 second 成员变量的值。
pair 的嵌套:将一个 pair 对象作为另一个 pair 对象的成员。
#include#includeint main(){std::pair p1(1, 2);std::pair<int, std::pair> p2(3, std::make_pair(4, 5));std::pair<std::pair, std::pair> p3(std::make_pair(6, 7), std::make_pair(8, 9));std::cout << p1.first << "," << p1.second << std::endl;std::cout << p2.first << "," << p2.second.first << p2.second.second << std::endl;std::cout << p3.first .first <<"," << p3.first.second << "," << p3.second.first << p3.second.second << std::endl;return 0; }
pair自带的排序规则:按照first成员升序排序,若first成员相等,则按照second成员升序排序。
#include#include#include#includeint main(){std::vector<std::pair> vec;vec.push_back(std::make_pair(3, 2));vec.push_back(std::make_pair(1, 4));vec.push_back(std::make_pair(2, 1));std::sort(vec.begin(), vec.end());for(const auto& p : vec){std::cout << p.first << "," << p.second << std::endl;}// 1,42,13,2return 0;}
创建一个存储 pair 对象的向量 vec,包含三个pair对象。
#include#include#include// 定义一个结构体,表示一个人的信息struct Person{std::string name;int age;};int main(){// 创建一个存储Person对象的向量std::vector people;// 添加一些Person对象到向量中people.push_back({"Alice", 25});people.push_back({"Bob", 30});people.push_back({"Charlie", 20});// 创建一个存储pair的向量,每个pair包含一个Person对象和一个评分std::vector<std::pair> scores;// 添加一些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){std::cout << "Name: " << pair.first.name << std::endl;std::cout << "Age: " << pair.first.age << std::endl;std::cout << "Score: " << pair.second << std::endl;}return 0;}
C++ 在线工具 | 菜鸟工具 (jyshare.com)
Name: Alice
Age: 25
Score: 90
Name: Bob
Age: 30
Score: 85
Name: Charlie
Age: 20
Score: 95
可拓展学习:
C++ pair的基本用法总结(整理)_c++ pair用法-CSDN博客
C++中push_back()函数_pushback函数-CSDN博客