日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 17 标准库特殊设施)tuple 类型

發布時間:2025/3/21 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(chap 17 标准库特殊设施)tuple 类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 定義

將一些數據組合成單一對象(類似pair)

tuple支持的操作

操作解釋
tuple<T1, T2, …, Tn> t;t是一個tuple,成員數為n,第i個成員的類型是Ti所有成員都進行值初始化。
tuple<T1, T2, …, Tn> t(v1, v2, …, vn);每個成員用對應的初始值vi進行初始化。此構造函數是explicit的。
make_tuple(v1, v2, …, vn)返回一個用給定初始值初始化的tuple。tuple的類型從初始值的類型推斷。
t1 == t2當兩個tuple具有相同數量的成員且成員對應相等時,兩個tuple相等。
t1 relop t2tuple的關系運算使用字典序。兩個tuple必須具有相同數量的成員。
get(t)返回t的第i個數據成員的引用:如果t是一個左值,結果是一個左值引用;否則,結果是一個右值引用。tuple的所有成員都是public的。
tuple_size::value一個類模板,可以通過一個tuple類型來初始化。它有一個名為value的public constexpr static數據成員,類型為size_t,表示給定tuple類型中成員的數量。
tuple_element<i, tupleType>::type一個類模板,可以通過一個整型常量和一個tuple類型來初始化。它有一個名為type的public成員,表示給定tuple類型中指定成員的類型。

1.1 定義和初始化tuple

定義和初始化示例:

tuple<size_t, size_t, size_t> threeD;/ / 三個成員都設置為 0 tuple<size_t, size_t, size_t> threeD{1,2,3}; tuple<size_t, size_t, size_t> threeD = {1,2,3};//errortuple<string, vector<double>, int, list<int>> someVal ( "constants", { 3.14 , 2.718 } , 42, { 0,1, 2, 3, 4, 5 } )auto item = make_tuple("0-999-78345-X", 3, 2.00); tem 是一個 tuple, 類型為 tuple<const char *, int, double>

1.2 訪問tuple的成員

要訪問tuple的成員,使用一個名為get的標準庫函數模板,同時傳遞給get一個tuple對象,其返回指定成員的引用

auto book = get<0>(item); //返回item的第一個成員 auto book = get<1>(item); //返回item的第二個成員 auto book = get<2>(item)/cnt; //返回item的最后一個成員 get<2>(item) *= 0.8; //打折20%

1.3 decltype

不知道一個 tuple 準確的類型細節信息, 可以用兩個輔助類模板來查詢 tuple成員的數量和類型:

typedef decltype (item) trans; / / trans 是 item的類型

1.4 tuple_size

tuple_size 有一個名為 value 的public static 數據成員, 它表示給定 tuple中成員的數量。

/ / 返回 trans 類型對象中成員的數量 size_t sz= tuple_size<trans>::value;//返回3

1.5 tuple_element

tuple_element 模板除了一個 tuple 類型外, 還接受一個索引值。 它有一個名為 type 的 public 類型成員, 表示給定 tuple 類型中指定成員的類型。

/ / cnt 的類型與 item 中第二個成員相同 tuple_element<1, trans>::type cnt = get<1> (item) ; // cnt 是一個 int

1.6 關系和相等運算符

只有兩個 tuple 具有相同數量的成員時,才可以比較

tuple<string, string> duo ( "1", "2" } ; tuple<size_t, size_t> twoD (1, 2 ) ; bool b (duo == twoD) ; / / 錯誤: 不能比較 size_t 和 string tuple<size_t, size_t, size_t> threeD(1, 2, 3); b = ( twoD < threeD) ; //錯誤: 成員數量不同 tuple<size_t, size_t> origin (0, 0); b = (origin < twoD); //正確:b為true

總結

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 17 标准库特殊设施)tuple 类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。