哪个省份做网站的多,可视化网站开发系统介绍,s001网站建设公司,住房与城市建设部网站文章目录 一、pair用法1.2、pair的创建和初始化1.3、pair对象的操作1.4、(make_pair)生成新的pair对象1.5、通过tie获取pair元素值 2、typedef2.1、什么是typedef2.2、typedef用法2.2.1、对于数据类型使用例如#xff1a;2.2.2、对于指针的使用例如2.2.3、对于结构体的使用 2.… 文章目录 一、pair用法1.2、pair的创建和初始化1.3、pair对象的操作1.4、(make_pair)生成新的pair对象1.5、通过tie获取pair元素值 2、typedef2.1、什么是typedef2.2、typedef用法2.2.1、对于数据类型使用例如2.2.2、对于指针的使用例如2.2.3、对于结构体的使用 2.3、进阶typedef2.3.1、数组指针3.1.2、指针函数3.1.3、Typedef与define 参考连接原文链接
https://blog.csdn.net/sevenjoin/article/details/81937695 一、pair用法
pair是将2个数据组合成一组数据的一种数据类型pair是通过struct结构体实现的其标准库类型--pair类型定义在#include utility头文件中
类模板templateclass T1,class T2 struct pair参数T1是第一个值的数据类型T2是第二个值的数据类型。功能将一对值合在一起比如二维坐标xy当然可以用结构体实现但是使用pair有它的简洁之处。两个值分别通过 .first 和 .second 来访问。
pairT1, T2 p1; //创建一个空的pair对象使用默认构造它的两个元素分别是T1和T2类型采用值初始化。
pairT1, T2 p1(v1, v2); //创建一个pair对象它的两个元素分别是T1和T2类型其中first成员初始化为v1second成员初始化为v2。
make_pair(v1, v2); // 以v1和v2的值创建一个新的pair对象其元素类型分别是v1和v2的类型。
p1 p2; // 两个pair对象间的小于运算其定义遵循字典次序如 p1.first p2.first 或者 !(p2.first p1.first) (p1.second p2.second) 则返回true。
p1 p2 // 如果两个对象的first和second依次相等则这两个对象相等该运算使用元素的操作符。
p1.first; // 返回对象p1中名为first的公有数据成员
p1.second; // 返回对象p1中名为second的公有数据成员
p1 p2 // pair变量间赋值1.2、pair的创建和初始化
pair包含两个数值与容器一样pair也是一种模板类型。但是又与之前介绍的容器不同
在创建pair对象时必须提供两个类型名两个对应的类型名的类型不必相同
pairstring, string anon; // 创建一个空对象anon两个元素类型都是string
pairstring, int word_count; // 创建一个空对象 word_count, 两个元素类型分别是string和int类型
pairstring, vectorint line; // 创建一个空对象line两个元素类型分别是string和vector类型当然也可以在定义时进行成员初始化
pairstring, string author(James,Joy); // 创建一个author对象两个元素类型分别为string类型并默认初始值为James和Joy。
pairstring, int name_age(Tom, 18);
pairstring, int name_age2(name_age); // 拷贝构造初始化pair类型的使用相当的繁琐如果定义多个相同的pair类型对象可以使用typedef简化声明
typedef pairstring,string Author;
Author proust(March,Proust);
Author Joy(James,Joy);变量间赋值
pairint, double p1(1, 1.2);
pairint, double p2 p1; //operator 1.3、pair对象的操作
访问两个元素操作可以通过first和sencond访问
pairint ,double p1;p1.first 1;p1.second 2.5;coutp1.first p1.secondendl;//输出结果1 2.5string firstBook;
if(author.firstJames author.secondJoy)firstBookStephen Hero;1.4、(make_pair)生成新的pair对象
还可以利用make_pair创建新的pair对象 pairint, double p1;p1 make_pair(1, 1.2);cout p1.first p1.second endl;//output: 1 1.2int a 8;string m James;pairint, string newone;newone make_pair(a, m);
cout newone.first newone.second endl;//output: 8 James1.5、通过tie获取pair元素值
在某些清况函数会以pair对象作为返回值时可以直接通过std::tie进行接收。比如
std::pairstd::string, int getPreson() {return std::make_pair(Sven, 25);
}int main(int argc, char **argv) {std::string name;int ages;std::tie(name, ages) getPreson();std::cout name: name , ages: ages std::endl;return 0;
}2、typedef
2.1、什么是typedef
typedef是在C和C编程语言中的一个关键字。作用是为现有的数据类型(int、float、char……)创建一个新的名字目的是为了使代码方便阅读和理解。
2.2、typedef用法
2.2.1、对于数据类型使用例如
typedef int NEW_INT;以上就是给int起了一个新的名字NEW_INT注意要加分号。当要定义int类型数据时就可以
NEW_INT num;此时NEW_INT num 等同于 int num。
2.2.2、对于指针的使用例如
typedef int *PTRINT;以上就是给int *起了一个新的名字NEW_INT。可定义int类型指针变量如
PTRINT x;此时PTRINT x等同于int *x。 例
2.2.3、对于结构体的使用
在声明结构体时可为结构体和结构体指针起别名如
typedef struct NUM
{int a;int b;
}DATA,*PTRDATA;此时DATA等同于struct NUM*PTRDATA等同于struct NUM *。
定义结构体变量及指针可简化为 DATA data; //定义结构体变量PTRDATA pdata; //定义结构体指针举例
#include stdio.htypedef struct NUM
{int a;int b;
}DATA,*PTRDATA;int main()
{DATA data; //定义结构体变量PTRDATA pdata; //定义结构体指针pdatadata; //结构体指针指向结构体变量 data.a100;data.b500;printf(a%d\nb%d\n,data.a,data.b);printf(a%d\nb%d\n,pdata-a,pdata-b);return 0;
}OUT:
2.3、进阶typedef
2.3.1、数组指针
int (*ptr)[3];使用Typedef
typedef int (*PTR_TO_ARRAY)[3];例
#include stdio.htypedef int (*PTR_TO_ARRAY)[3];int main()
{Int I;Int temp[3]{1,2,3};PTR_TO_ARRAY ptr_to_array;ptr_to_array temp;for(i0;i3;i){printf(%d\n,(*ptr_to_array)[i]);}return 0;
}3.1.2、指针函数
int (*fun)(void);使用Typedef
typedef int (*PTR_TO_FUN)(void);3.1.3、Typedef与define
Typedef是起别名define是替换。 例如
typedef int *PTR;PTR a,b;此时a,b都是指针变量。
#define PTR int*PTR a,b;此时等同于
int *a,b;只有a为指针变量而b为整型变量。