std::make_pair & std::make_tuple 的区别和联系

发布时间 2023-12-13 14:56:41作者: He_LiangLiang

std::make_pairstd::make_tuple 都是用于创建对应类型的对象的 C++ 标准库函数模板。

它们的区别主要在于它们所处理的数据类型和返回类型。

std::make_pair

std::make_pair 用于创建一个 std::pair 对象,std::pair 是一个包含两个值的容器。

#include <iostream>
#include <utility>

int main() {
    // 使用 std::make_pair 创建一个 std::pair 对象
    auto myPair = std::make_pair(42, "hello");

    // 输出 pair 的内容
    std::cout << "Pair: " << myPair.first << ", " << myPair.second << std::endl;

    return 0;
}

std::make_tuple

std::make_tuple 用于创建一个 std::tuple 对象,std::tuple 是一个包含多个值的容器。

#include <iostream>
#include <tuple>

int main() {
    // 使用 std::make_tuple 创建一个 std::tuple 对象
    auto myTuple = std::make_tuple(42, "hello", 3.14);

    // 通过 std::get 访问 tuple 的元素
    std::cout << "Tuple: " << std::get<0>(myTuple) << ", " << std::get<1>(myTuple)
              << ", " << std::get<2>(myTuple) << std::endl;

    return 0;
}

区别和联系:

  1. 数据数量:

    • std::make_pair 用于创建包含两个元素的 std::pair
    • std::make_tuple 用于创建包含任意数量元素的 std::tuple
  2. 元素类型:

    • std::make_pair 的元素类型可以不同。
    • std::make_tuple 的元素类型可以不同,可以是不同类型的值。
  3. 返回类型:

    • std::make_pair 返回 std::pair 类型。
    • std::make_tuple 返回 std::tuple 类型。
  4. 元素访问:

    • std::pair 的元素通过 firstsecond 访问。
    • std::tuple 的元素通过 std::get 访问。