C++ 一些特殊的类(一) tuple 类、枚举类

pair 类型

  1. 概念

    pair 是定义在头文件 utility 头文件中的一个模版类,一个 pair 可以保存两个数据成员。

  2. pair 的操作

    ①.创建 pair

    同一般类型的创建,pair 提供了多种初始化操作。

    pair p;//默认构造函数,成员执行默认初始化
    pair p1(1,2);//成员用值初始化
    pair p2 = {"1111",12};//列表初始化,等价于 p2("1111",12)
    auto p3 = make_pair("222",13);//方法构造,根据成员值推导成员类型
    

    ②.访问成员

    pair 的成员都是 public 的,分别命名为:first 和 second。

C++ 一些特殊的类(一) tuple 类、枚举类_第1张图片

③.比较操作

pair 支持关系运算符的操作,对成员分别按字典顺序进行比较;当两个成员都相等是,两个 pair 对象相等。

C++ 一些特殊的类(一) tuple 类、枚举类_第2张图片

tuple 类型

  1. 概念

    tuple 是定义在头文件 tuple 中的一个模版,类似 pair 类型。与 pair 不同的是,每个 tuple 可以有任意类型、任意数量的的成员。

  2. tuplie 的操作

    ①.创建 tuple

    同 pair 类型的创建,tuple 也提供了多种初始化操作。

    tuple t;//默认构成函数
    tuple t1(18,"wwww",20.16);//提供成员初始值
    tuple t2 {18,"wwww",20.16)};//列表初始化
    tuple t3 = make_tuple(18,"wwww",20.16);//方法构造
    

    ②.访问成员

    与 pair 类型不同,tuple 类型的成员数量是无限制的,因此都是未命名的。要访问 tuple 的成员需要使用 get 标准函数模版,成员标号从 0 开始。

C++ 一些特殊的类(一) tuple 类、枚举类_第3张图片

③.获取成员类型和数量

可以通过两个类模版来分别获取一个 tuple 类型的成员数量及对应成员的类型。

C++ 一些特殊的类(一) tuple 类、枚举类_第4张图片

④.比较操作

tuple 支持关系运算符的操作,对成员分别按字典顺序进行比较;当所有成员都相等是,两个 tuple 对象相等。

C++ 一些特殊的类(一) tuple 类、枚举类_第5张图片

枚举类型

  1. 概念

    ①.枚举类型:枚举可以将一组整型常量组织在一起,枚举属于字面值常量类型。每个枚举类型都定义了一种新的类型。

    ②.限定作用域枚举:即强类型枚举,定义时使用 class 关键字,使用每个枚举量必须加域作用符 : : 。

    ③.不限定作用域枚举:定义时不带 class 关键字,具名或者不具名,其成员名字是父作用域全局可见的。

  2. 不限定作用域枚举类型

    ①.定义

    使用 enum 关键字,后接类型名字及用花括号括起来的枚举成员,类型名字可以省略。

    enum color {red,yellow,blue};//定义枚举类型 color
    

    ②.枚举成员

    不限定作用域的枚举类型,其成员的作用域和枚举类型本身的作用域相同。

C++ 一些特殊的类(一) tuple 类、枚举类_第6张图片

默认情况下枚举值从 0 开始递增,也可以为一个或者多个成员指定枚举值,且枚举值可以不唯一。

C++ 一些特殊的类(一) tuple 类、枚举类_第7张图片

③.定义对象

只要 enum 是具名的,就可以定义并初始化该类型的对象,只能使用该类型的枚举成员或者该类型的对象进行赋值。

C++ 一些特殊的类(一) tuple 类、枚举类_第8张图片

不限定作用域的枚举类型的对象或者成员可用自动的转换成整型。

C++ 一些特殊的类(一) tuple 类、枚举类_第9张图片

④.前置声明

不限定作用域的枚举类型没有默认成员大小,前置声明时必须指定其成员大小,在枚举名字后加冒号指定成员类型。

enum color:int;//指定枚举的成员类型为 int
  1. 限定作用域枚举类型

    ①.定义

    使用 enum class 关键字,后接类型名字及用花括号括起来的枚举成员,类型名字不可以省略。

    enum clas color {red,yellow,blue};//定义强枚举类型 color
    

    ②.枚举成员

    限定作用域的枚举类型,使用其成员必须通过域作用符。默认情况下枚举值从 0 开始递增,也可以为一个或者多个成员指定枚举值,且枚举值可以不唯一。

C++ 一些特殊的类(一) tuple 类、枚举类_第10张图片

③.定义对象

同限定作用域枚举类型,可以定义并初始化该类型的对象,只能使用该类型的枚举成员或者该类型的对象进行赋值。但限定作用域的枚举成员不会自动转换成整型。

C++ 一些特殊的类(一) tuple 类、枚举类_第11张图片

④.前置声明

限定作用域的枚举类型默认成员类型是 int,前置声明时可以不知道成员类型。

enum clas color;//默认成员类型是 int

你可能感兴趣的:(c++,c++,类)