开发一套网站系统 多少钱,主流网站模板,山东省离线地图导航下载,吴江区经济开发区建设工程网站文章目录 【 1. pair 对象的创建 】【 2. pair 对象的赋值 】【 3. pair 对象的比较 】【 4. pair对象成员的互换】 C STL 标准库提供了 pair 类模板#xff0c;专门用来将 2 个普通元素 first 和 second#xff08;可以是 C 基本数据类型、结构体、类自定的类型#xff09;… 文章目录 【 1. pair 对象的创建 】【 2. pair 对象的赋值 】【 3. pair 对象的比较 】【 4. pair对象成员的互换】 C STL 标准库提供了 pair 类模板专门用来将 2 个普通元素 first 和 second可以是 C 基本数据类型、结构体、类自定的类型创建成一个新元素first, second。头文件 utility
【 1. pair 对象的创建 】
默认构造函数空的 pair对象。
// 1. 默认构造函数即创建空的 pair 对象
pair DataType1, DataType2 pair1;赋值构造函数传入参数赋值。
// 2. 直接使用 2 个元素初始化成 pair 对象
pair DataType1, DataType2 pair2(DataType1_Value, DataType2_Value);拷贝构造函数利用已有对象赋值。
// 3. 拷贝构造函数即借助另一个 pair 对象创建新的 pair 对象
pair DataType1, DataType2 pair3(pair2);移动构造函数C 11 标准新增 在创建 pair4 对象时调用了 make_pair() 函数 它也是 utility 头文件提供的其功能是 生成一个 pair 对象。因此当我们将 make_pair() 函数的返回值是一个临时对象这个临时对象是右值意味着它是一个临时存在的、不可修改的对象作为参数传递给 pair() 构造函数时其调用的是移动构造函数而不是拷贝构造函数。
// 4. 移动构造函数
pair DataType1, DataType2 pair4 (make_pair(DataType1_Value, DataType2_Value));
//或
pair DataType1, DataType2 pair4 make_pair(DataType1_Value, DataType2_Value);右值引用构造函数C11 标准新增
// 5. 使用右值引用参数创建 pair 对象
pair DataType1, DataType2 pair5(DataType1(DataType1_Value), DataType2(DataType2_Value));不常用的构造函数C11 标准新增
// 6. (不常用)
pair (piecewise_construct_t pwc, tupleArgs1... first_args, tupleArgs2... second_args);实例
#include iostream
//#include utility
#include string
using namespace std;
int main() {// 调用构造函数 1也就是默认构造函数pair string, int pair1;// 调用第 2 种构造函数pair string, string pair2(baidu, http://www.baidu.com);// 调用拷贝构造函数pair string, string pair3(pair2);//调用移动构造函数pair string, string pair4(make_pair(baidu, http://www.baidu.com));
//或
// pair string, string pair4 make_pair(baidu, http://www.baidu.com);// 调用第 5 种构造函数pair string, string pair5(string(baidu), string(http://www.baidu.com));cout pair1: pair1.first pair1.second endl;cout pair2: pair2.first pair2.second endl;cout pair3: pair3.first pair3.second endl;cout pair4: pair4.first pair4.second endl;cout pair5: pair5.first pair5.second endl;return 0;
}【 2. pair 对象的赋值 】
手动为 pair 对象赋值
pair1.first baidu;
pair1.second 34;【 3. pair 对象的比较 】
注意对于 进行比较的 2 个 pair 对象其对应的键和值的类型必须相同否则将没有可比性 同时 编译器提示没有相匹配的运算符即找不到合适的重载运算符。utility 头文件中除了提供创建 pair 对象的方法之外还为 pair 对象重载了 、、、、、! 这 6 种运算符 其运算规则是对于进行比较的 2 个 pair 对象先比较 pair.first 元素的大小如果相等则继续比较 pair.second 元素的大小 。实例
#include iostream
#include utility // pair
#include string // string
using namespace std;
int main() {pair string, int pair1(STL教程, 20);pair string, int pair2(C教程, 20);pair string, int pair3(C教程, 30);//pair1和pair2的key不同value相同if (pair1 ! pair2) {cout pair ! pair2 endl;}//pair2和pair3的key相同value不同if (pair2 ! pair3) {cout pair2 ! pair3 endl;}return 0;
}【 4. pair对象成员的互换】
pair类模板还提供有一个 swap() 成员函数 能够 互换 2 个 pair 对象的键值对其操作成功的 前提是这 2 个 pair 对象的键和值的类型要相同。实例
#include iostream
#include utility
#include string
using namespace std;
int main() {pair string, int pair1(pair, 10); pair string, int pair2(pair2, 20);//交换 pair1 和 pair2 的键值对pair1.swap(pair2);cout pair1: pair1.first pair1.second endl;cout pair2: pair2.first pair2.second endl;return 0;
}