在 C++ 中,tuple 和 pair 都是标准库中的数据结构,用于存储不同类型的值。它们在 C++11 及之后的版本中被支持,并且非常有用,特别是在需要将多个不同类型的元素组合在一起时。

1. pair是一个简单的容器,用来存储两个元素,这两个元素可以是不同类型的。

pair<double, string> location:

2. tuple 是一个可以包含多个元素的容器,支持不同类型的元素,元素的数量可以超过两个。tuple 比 pair 更灵活,因为它可以存储任意数量和类型的元素。

 std::tuple<Type1, Type2, ..., TypeN> tuple_name;

下面分别对这两种数据结构举例和分析:

一、tuple

vector<tuple<string, double, string>> readings =
{
    {"temperature", 23.5, "°C"},
    {"humidity", 45.2, "%"},
    {"pressure", 1013.25, "hPa"}
};
  std::cout << std::get<0>(readings) << ", " << std::get<1>(readings) << ", " << std::get<2>(readings) << std::endl;  

1.1 vector> readings:

    • vector 是一个标准库容器,提供动态大小的数组功能,用于存储多个元素。
    • tuple 表示每个元素是一个包含三个不同类型元素的元组。这里使用了:
      • string:用于存储一个字符串(如单位名、测量项等)。
      • double:用于存储一个浮动点数值(如温度、湿度、压力等物理量)。
      • string:用于存储单位(如 "°C"、"%"、"hPa" 等)。
    • readings 变量是一个 vector,它的每个元素都是一个 tuple,用于存储不同的测量数据。

1.2 初始化 readings:

    • 使用了 列表初始化 来初始化 readings,里面包含了三个元素,每个元素都是一个 tuple,表示一个测量项。
    • 每个 tuple 包含三个部分:
      • "temperature":表示测量项的名称,类型是 string,表示温度。
      • 23.5:测量值,类型是 double,表示温度的数值,单位为摄氏度(°C)。
      • "°C":测量单位,类型是 string,表示温度的单位为摄氏度。

同理,第二个和第三个 tuple 元素分别表示湿度和气压:

    • "humidity", 45.2, "%", 表示湿度 45.2%。
    • "pressure", 1013.25, "hPa", 表示气压 1013.25 hPa。

二、pair

pair<double, double> location = { 34.0522, -118.2437 };
 std::cout <<location.first << ", " << location.second << std::endl;  

1.1 pair location:

    • pair 是 C++ 标准库中的一个模板类,用于存储一对不同类型的值。
    • pair 表示一个包含两个 double 类型元素的 pair,每个元素可以是一个浮动点数。
      • 第一个 double 表示纬度(通常是正值或负值,表示南北方向)。
      • 第二个 double 表示经度(通常是正值或负值,表示东西方向)。
    • location 是这个 pair 类型的变量,用于存储位置的经纬度。

1.2 = { 34.0522, -118.2437 }:

    • 这是 列表初始化 语法,用来初始化 location。
    • { 34.0522, -118.2437 } 是一个包含两个 double 数值的列表:
      • 34.0522:表示纬度(位于北纬)。
      • -118.2437:表示经度(位于西经)。
    • 这两个数值是常见的表示 地理坐标。

总结:

  • 这段代码创建了一个 pair 类型的 location 变量,并通过列表初始化方式将其设置为 34.0522(纬度)和 -118.2437(经度),这两个值表示洛杉矶的地理坐标。
  • pair 在这里用来存储经纬度信息,便于一对一存储相关的数据。

欢迎关注公众号【比特层递】,一起交流进步。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐