东莞做网站企业,网站建设流程及规范,上海自适应网站,河南省监理建设协会网站1.pair的定义和结构
在c中,pair是一个模板类,用于表示一对值的组合它位于utility头文件中 pair的定义如下:
templateclass T1, class T2
struct pair{T1 first; //第一个值T2 second; //第二个值//构造函数pair();pair(const T1x,const T2y);//比较…1.pair的定义和结构
在c中,pair是一个模板类,用于表示一对值的组合它位于utility头文件中 pair的定义如下:
templateclass T1, class T2
struct pair{T1 first; //第一个值T2 second; //第二个值//构造函数pair();pair(const T1x,const T2y);//比较运算符重载bool operator(const pairrhs)const;bool operator!(const pairrhs)const;//其它成员函数和特性//...
}
pair类模板有两个模板参数,T1和T2,分别表示第一个值和第二个值的类型pair类有两个成员变量,first和second,分别表示第一个值和第二个值pair类还有一些成员函数和特性,例如:默认构造函数、带参数的构造函数、比较运算符重载等使用pair类,可以方便地将两个值组合在一起,并进行传递、存储和操作,例如:可以将两个整数组合在一起作为函数的返回值,或者将一对值存储在容器中
pair的示例:
#includeiostream
#includeutility
int main(){std::pairint,doublep1(1,3.14);std::pairchar,std::stringp2(a,hello);std::coutp1.first,p1.second\n;std::coutp2.first,p2.second\n;
} 输出 1,3.14 a,hello
### 以上代码创建了两个pair对象,分别包含不同类型的值,然后,通过访问first和second成员变量,输出了这些值 2.pair的嵌套
pair可以进行嵌套,也就是说可以将一个pair对象作为另一个pair对象的成员通过嵌套pair,可以方便地组合多个值,并形成更复杂的数据结构例如:你可以创建一个三维坐标系的点,其中第1个维度由一个整数表示;第2、3个维度由一个pair表示
pair的嵌套示例:
#includeiostream
#includeutility
int main(){std::pairint,intp1(1,2);std::pairint,std::pairint,intp2(3,std::make_pair(4,5));std::pairstd::pairint,int,std::pairint,intp3(std::make_pair(6,7),std::make_pair(8,9));std::coutp1.first,p1.second\n;std::coutp2.first,p2.second.first,p2.second.second\n; std::coutp3.first.first,p3.first.second,p3.second.first,p3.second.second\n;
}
输出: 3.pair自带排序规则
pair自带的排序规则是按照first成员进行升序排序如果first成员相等,则按照second成员进行升序排序这意味着当使用标准库中的排序算法(如std::sort)对包含pair对象的容器进行排序时,会根据pair对象的first成员进行排序
pair进行排序的示例: #includeiostream
#includeutility
#includevector
#includealgorithm
int main(){std::vectorstd::pairint,intvec;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::coutp.first,p.second\n;}return 0;
}
输出: 4.代码示例:
#includeiostream
#includeutility
#includevector
//定义一个结构体,表示一个人的信息
struct Person{std::string name;int age;
};int main(){//创建一个储存Person对象的向量std::vectorPersonpeople;//添加一些Person对象到向量中people.push_back({Alice,25}); people.push_back({Bob,30}); people.push_back({Charlie,20});//创建一个储存pair动的向量,每一个pair包含一个Person对象和有一个评分std::vectorstd::pairPerson,intscores;//添加一些pair到向量中scores.push_back({people[0],90});scores.push_back({people[1],85});scores.push_back({people[2],95});//遍历pair向量,并输出每个人的姓名,年龄和评分for(const autopair:scores){std::coutName:pair.first.name\n;std::coutAge:pair.first.name\n;std::coutScore:pair.second\n;std::cout\n;} return 0;
} 输出: