首页 > 其他分享 >std::make_pair & std::make_tuple 的区别和联系

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

时间:2023-12-13 15:15:14浏览次数:26  
标签:std tuple make 元素 类型 pair


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 访问。

 

标签:std,tuple,make,元素,类型,pair
From: https://www.cnblogs.com/music-liang/p/17899026.html

相关文章

  • RustDesk 部署
    一、通过编译好的文件安装1、下载服务端程序wget-P/usr/local/srchttps://github.com/rustdesk/rustdesk-server/releases/download/1.1.9/rustdesk-server-linux-amd64.zip2、解压文件并创建用户#解压tarxf/usr/local/src/rustdesk-server-linux-amd64.zi......
  • 使用CEF(七)详解macOS下基于CEF的多进程应用程序CMake项目搭建
    由于macOS下的应用程序结构导致了CEF这样的多进程架构程序在项目结构、运行架构上有很多细节需要关注,这一块的内容比起Windows要复杂的多,所以本文将会聚焦macOS下基于CEF的多进程应用架构的环境配置,并逐一说明了CMake的相关用法和CEF应用配置细节。前言在进行搭建之前,我们首先必......
  • C++ 用 std::get<> 访问元组
     C++ 用std::get<>访问元组 #include<iostream>#include<tuple>intmain(){//Creatingatuplestd::tuple<int,double,std::string>myTuple(42,3.14,"Hello");//Accessingelementsusingstd::get<>......
  • C++(using namespace std;)
    usingnamespacestd;是C++中的一条指令,用于指示编译器使用标准命名空间std中的所有标识符。这意味着在代码中可以直接使用标准库中的各种类、函数和对象,而无需在每个标识符前面添加std::前缀。以下是关于这条指令的一些解释:using关键字:using是一个关键字,用于创建别......
  • C++(std::vector)
    这段代码定义了一个std::vector对象,该对象的元素类型为float。std::vector是C++标准库中的动态数组容器,可以存储多个元素,并且大小可以动态调整。std::vector<float>具体解释如下:std::vector:这是C++标准库中的一个模板类,用于实现动态数组。std::vector是一个模板类,......
  • ARC166 B Make Multiples 题解
    LinkARC166BMakeMultiplesQuestion给出\(N\)个整数,\(A_1...A_N\),还有三个数\(a,b,c\)我们可以给\(A_i\)加上\(1\)需要使得数组\(A\)满足,存在一个数是\(a\)的倍数,一个数是\(b\)的倍数,一个数是\(c\)的倍数求最少的操作次数Solution考虑对于每个数的操作......
  • C++(std::unique_ptr)
    std::unique_ptr是C++标准库中的一种智能指针,用于管理动态分配的内存。它是一种独占拥有权(exclusiveownership)的智能指针,保证同一时刻只有一个std::unique_ptr指向特定的资源。当std::unique_ptr被销毁时,它所拥有的资源也会被释放。以下是std::unique_ptr的基本用法和......
  • std::move
    在使用std::move时,有几个重要的注意事项:std::move并不会真正地移动对象,真正的移动操作是在移动构造函数、移动赋值函数等完成的,std::move只是将参数转换为右值引用1。std::move将一个左值强制转化为右值引用,以用于移动语义。移动语义,允许直接转移对象的资产和属性的所有......
  • qt和cmake安装
    1/qtIndexof/archive/qt  2、cmakeDownloadCMake 安装比较简单 记得选择addpath,这样就不用手动添加环境变量了 3、vscode插件c/c++ cmake cmaketools qtconfigure qttools ......
  • C++(std::shared_ptr)
    std::shared_ptr是C++标准库中的一个智能指针类,用于管理动态分配的内存。它提供了一种共享拥有权(sharedownership)的机制,通过引用计数来跟踪指向同一块内存的所有std::shared_ptr实例。当最后一个std::shared_ptr被销毁时,它会自动释放所拥有的内存。基本用法:#include<me......