[C++11/14新特性] tuple元組介紹

C++11 標準新引入了一種類模板,命名為 tuple(中文可直譯為元組)。tuple 最大的特點是:實例化的對象可以存儲任意數量、任意類型的數據。tuple 的應用場景很廣泛,例如當需要存儲多個不同類型的元素時,可以使用 tuple;當函數需要返回多個數據時,可以將這些數據存儲在 tuple 中,函數只需返回一個 tuple 對象即可。

1.聲明并初始化一個tuple對象

    std::tuple<int, float, std::string> t1(41, 6.3, "nico");std::cout << "tuple<int, float, std::string>, sizeof = " << sizeof(t1) << std::endl;std::cout << "t1: " << std::get<0>(t1) << ' ' << std::get<1>(t1) << ' ' << std::get<2>(t1) << std::endl;    // 獲取下標 0 1 2處的元素

2.利用auto關鍵字,自動獲取類型

    auto t2 = std::make_tuple(22, 44, "hello");std::cout << "t2 sizeof = " << sizeof(t2) << std::endl;std::cout << "t2: " << std::get<0>(t2) << ' ' << std::get<1>(t2) << ' ' << std::get<2>(t2) << std::endl;

3.tuple比大小操作??

    // 比大小操作if(t1 < t2){std::cout << "t1 < t2" << std::endl;}else if(t1 > t2){std::cout << "t1 > t2" << std::endl;}else{std::cout << "t1 = t2" << std::endl;}

4.tie綁定操作進行復制

    std::tuple<int, float, std::string> t3(77, 1.1, "more light");int i1;float f1;std::string s1;tie(i1, f1, s1) = t3;std::cout << "i1 = " << i1 << " f1 = " << f1 << " s1 = " << s1 << std::endl;

5.tuple_size函數 ? 功能是獲取某個 tuple 對象中元素的個數

    typedef std::tuple<int, float, std::string> TupleType;              // 對tuple<int,                 float, std::string>取別名 為 TupleTypeint value = std::tuple_size<TupleType>::value;std::cout << "TupleType對象的元素個數為: " << value << std::endl;    // 3

6.tuple_element<i, type>::type函數 它只有一個成員變量 type,功能是獲取某個 tuple 對象第 i+1 個元素的類型

    std::tuple_element<0, TupleType>::type i2 = 1;std::cout << "i2 = " << i2 << std::endl;                           // i2 = 1

完整代碼示例:

#include <iostream>
#include <tuple>int main(){std::tuple<int, float, std::string> t1(41, 6.3, "nico");std::cout << "tuple<int, float, std::string>, sizeof = " << sizeof(t1) << std::endl;std::cout << "t1: " << std::get<0>(t1) << ' ' << std::get<1>(t1) << ' ' << std::get<2>(t1) << std::endl;    // 獲取下標 0 1 2處的元素// 利用auto關鍵字  自動獲取類型     make_tuple() 函數,它以模板的形式定義在 頭文件中,功能是創建一個 tuple 右值對象(或者臨時對象)auto t2 = std::make_tuple(22, 44, "hello");std::cout << "t2 sizeof = " << sizeof(t2) << std::endl;std::cout << "t2: " << std::get<0>(t2) << ' ' << std::get<1>(t2) << ' ' << std::get<2>(t2) << std::endl;// 比大小操作if(t1 < t2){std::cout << "t1 < t2" << std::endl;}else if(t1 > t2){std::cout << "t1 > t2" << std::endl;}else{std::cout << "t1 = t2" << std::endl;}// tie綁定操作進行復制std::tuple<int, float, std::string> t3(77, 1.1, "more light");int i1;float f1;std::string s1;tie(i1, f1, s1) = t3;std::cout << "i1 = " << i1 << " f1 = " << f1 << " s1 = " << s1 << std::endl;// tuple_size函數   功能是獲取某個 tuple 對象中元素的個數typedef std::tuple<int, float, std::string> TupleType;              // 對tuple<int, float, std::string>取別名 為 TupleTypeint value = std::tuple_size<TupleType>::value;std::cout << "TupleType對象的元素個數為: " << value << std::endl;    // 3// tuple_element<i, type>::type函數 它只有一個成員變量 type,功能是獲取某個 tuple 對象第 i+1 個元素的類型std::tuple_element<0, TupleType>::type i2 = 1;std::cout << "i2 = " << i2 << std::endl;                           // i2 = 1return 0;
}

運行結果:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20702.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20702.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20702.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

3D目標檢測入門:探索OpenPCDet框架

前言 在自動駕駛和機器人視覺這兩個飛速發展的領域中&#xff0c;3D目標檢測技術扮演著核心角色。隨著深度學習技術的突破性進展&#xff0c;3D目標檢測算法的研究和應用正日益深入。OpenPCDet&#xff0c;這個由香港中文大學OpenMMLab實驗室精心打造的開源工具箱&#xff0c;…

加密算法簡述

目錄 1 加密算法的分類 2 對稱加密 3 非對稱加密 4 哈希算法 1 加密算法的分類 數據加密的基本過程是將原本的明文數據依照某種算法進行一定的處理&#xff0c;使之成為一段不可讀的密文&#xff0c;只有通過相應的密鑰與算法進行計算后才可顯示出原文。而這個過程中的算法…

【用Python畫畫】六一兒童節畫愛心

本文收錄于 《Python編程入門》專欄&#xff0c;從零基礎開始&#xff0c;分享一些Python編程基礎知識&#xff0c;歡迎關注&#xff0c;謝謝&#xff01; 文章目錄 一、前言二、代碼示例三、知識點梳理四、總結 一、前言 本文介紹如何使用Python的海龜畫圖工具turtle&#xf…

linux中如和查找端口是否被占用

在Linux系統中&#xff0c;可以使用以下命令來查找特定端口是否被占用&#xff1a; 使用netstat命令&#xff1a; netstat -tuln | grep <port_number>其中&#xff0c;-t表示TCP協議&#xff0c;-u表示UDP協議&#xff0c;-l表示監聽狀態&#xff0c;-n表示顯示端口號…

Docker從安裝開始精通

從虛擬機到容器 1.環境配置的難題 軟件開發最大的麻煩事之一&#xff0c;就是環境配置。用戶計算機的環境都不相同&#xff0c;你怎么知道自家的軟件&#xff0c;能在那些機器跑起來&#xff1f; 用戶必須保證兩件事&#xff1a;操作系統的設置&#xff0c;各種庫和組件的安裝…

堆排序的實現

在上一篇博客中&#xff0c;介紹了堆的實現&#xff0c;現在來介紹一下堆排序。 一.打印有序&#xff1a; 現在先給一個無序的數組&#xff0c;現在我們利用我們實現的堆的功能先完成一下打印排序&#xff1a; 在for循環里是一個建堆的過程&#xff0c;每來一個數據就放入堆中…

c++ map/multimap容器

在C中&#xff0c;std::map 和 std::multimap 是兩種關聯容器&#xff0c;它們包含了可重復的&#xff08;對于 multimap&#xff09;或唯一的&#xff08;對于 map&#xff09;鍵值對。這些容器都根據它們的鍵自動排序&#xff0c;并允許非常快速地根據鍵查找、插入和刪除元素…

監控易監測對象及指標之:深入監測Exchange 2013郵件服務器的關鍵指標

在當今的信息化時代&#xff0c;Exchange 2013郵件服務器因其高效、穩定的特點被廣泛應用于企業通信中。為了確保郵件服務器的持續穩定運行&#xff0c;及時發現并解決潛在問題至關重要。監控易作為一款功能強大的監控工具&#xff0c;為Exchange 2013郵件服務器提供了一系列細…

linux進程的加載和啟動過程分析

我們的源代碼通過預處理,編譯,匯編,鏈接后形成可執行文件,那么當我們在終端敲下指令$ ./a.out argv1 argv2 后,操作系統是怎么將我們的可執行文件加載并運行的呢? 首先知道,計算機的操作系統的啟動程序是寫死在硬件上的,每次計算機上電時,都將自動加載啟動程序,之后…

python第五次作業

1.請實現一個裝飾器&#xff0c;每次調用函數時&#xff0c;將函數名字以及調用此函數的時間點寫入文件中 # 導入datetime模塊&#xff0c;用于獲取當前時間并格式化輸出 import datetime# 定義一個裝飾器工廠函數log_funcName_time&#xff0c;它接受一個參數time def log_fu…

紅外聽力教學考試系統-紅外語音聽力廣播在大學英語四六級聽力考試中應用

紅外聽力教學考試系統-紅外語音聽力廣播在大學英語四六級聽力考試中的應用 由北京海特偉業科技有限公司任洪卓發布于2024年6月1日 紅外語音聽力廣播&#xff08;即紅外聽力教學考試系統&#xff09;在英語四六級聽力考試的應用正日益凸顯出其重要性和優越性。在當前的高等教育…

xcode刪除依賴包package,刪除不必要的依賴項

點擊項目&#xff0c;然后點擊PROJECT項里面的Package DepenDependencies&#xff1a; 選中一個依賴項&#xff0c;然后點擊減號&#xff0c;就可以把依賴項刪除掉了&#xff0c;左側項目下面的Package已經沒有了這個依賴項 TARGET下面的package也要刪除&#xff1a;在這里刪除…

【C++】【Windows】程序加載DLL庫時依次查找哪些目錄

搜索的順序通常如下&#xff1a; 應用程序目錄&#xff1a;首先&#xff0c;系統會在包含可執行文件&#xff08;EXE&#xff09;的目錄中查找DLL。系統目錄&#xff1a;接下來&#xff0c;系統會在Windows系統目錄中查找&#xff0c;比如 C:\Windows\System32。16位系統目錄&…

人工智能與未來工作:未來已來,你準備好了嗎?

1. 引言 隨著人工智能技術的飛速發展&#xff0c;它正在逐漸滲透到我們生活的方方面面&#xff0c;尤其是工作領域。本文將探討人工智能的基本概念&#xff0c;它在不同行業的應用&#xff0c;以及它對未來就業市場和教育體系可能帶來的影響。 2. 人工智能的基本概念 2.1 定…

ESP32S3外設學習筆記

GPIO ESP32的GPIO&#xff08;通用輸入輸出&#xff09;引腳非常靈活&#xff0c;支持多種工作模式。這些模式可以通過編程來配置&#xff0c;以適應不同的應用需求。以下是ESP32 GPIO引腳的主要工作模式&#xff1a; 1. 輸入模式 普通輸入模式&#xff1a;在這種模式下&…

dubbo復習:(14)通過上下文傳遞附加數據

服務調用和響應時&#xff0c;除了請求的方法和返回的響應&#xff0c;還可以通過上下文(Context)傳遞更多的數據(附加數據&#xff09; 一、接口定義 package cn.edu.tju.service;public interface ContextService {String invoke(String param); }二、服務端接口實現&#x…

OA前端用什么開發:深入探索技術選型與最佳實踐

OA前端用什么開發&#xff1a;深入探索技術選型與最佳實踐 在開發OA&#xff08;辦公自動化&#xff09;系統的前端時&#xff0c;技術選型是至關重要的一步。它不僅決定了系統的外觀和用戶體驗&#xff0c;還直接影響到系統的性能、安全性和可維護性。本文將從四個方面、五個…

nuxt3 api如何透傳(不引第3方庫)

背景&#xff1a; nuxt做為一個vue的服務端渲染框架&#xff0c;本身就具備服務端的功能&#xff0c;理論上可以完整做一個系統功能&#xff0c;包括對數據庫等等操作&#xff0c;但更合理的做法是nuxt應該定位只做服務端渲染的事情&#xff0c;更偏向ui層面&#xff0c;而非數…

大數據分析統計

大數據分析統計 from datetime import datetimeimport pandas as pd import matplotlib.pyplot as pltpm25files [PM2.5_2021.csv, PM2.5_2022.csv, PM2.5_2023.csv] pm10files [PM10_2021.csv, PM10_2022.csv, PM10_2023.csv]def read_csv_file(files):# 每個文件都有表頭…

C++之類(class)的三種成員修飾符(public、private、protected)總結

1、背景介紹 在C中&#xff0c;類&#xff08;class&#xff09;中成員的三種訪問修飾符&#xff08;access specifiers&#xff09;用于控制類的成員&#xff08;屬性和方法&#xff09;的訪問權限。這些修飾符決定了類成員在類的外部和內部是否可以被訪問。以下是這三種訪問…