關於C 中tuple 不定數的值組)的分析及使用

2021-10-07 04:52:32 字數 3011 閱讀 4350

tuple表示乙個不定數量的資料組,對比pair,表示兩個元素的對組,tuple就像是pair的擴充套件。可以指定多個不同性質的元素,使其成為乙個資料組,然後像使用乙個變數一樣,使用tuple物件。

首先,使用tuple時,我們需要包含標頭檔案:

#include

我們先看看如何宣告乙個tuple變數:

tuple<

int,

float

,double

,char

, string> t;

以上宣告了乙個tuple型別的變數,其中包含五種型別的元素,包括int,float,double,char,string。

也可以使用自動型別推導auto 結合 make_tuple()介面,直接賦值,宣告乙個tuple變數:

auto t =

make_tuple(1

,2.2

,3.33

);

在宣告變數之後,如果要提取變數中的元素,我們需要使用get關鍵字來獲取tuple中的元素。因為tuple並非stl中的容器,所以不存在迭代器讓我們遍歷提取其中的元素值。

get是c++11新推出的關鍵字,類似於使用pair中的first/second

get的使用方式如下:索引值從0開始,代表了tuple變數中的資料位置,後面括號內是tuple變數名稱。

get《索引值》

(tuple變數)

;

關於get的使用**如下:

auto t =

make_tuple(1

,2.2

,3.33);

cout << get<

0>

(t)<< endl;

// 1

cout << get<

1>

(t)<< endl;

// 2.2

cout << get<

2>

(t)<< endl;

// 3.33

另外,也可以使用get來修改tuple中的變數,修改方式如下:

auto t =

make_tuple(1

,2.2

,3.33);

get<

0>

(t)=

100;

// 1 -> 100

get<

1>

(t)=

200.222

;// 2.2 -> 200.222

get<

2>

(t)=

300.333

;// 3.33 -> 300.333

1、swap()

使用swap()可以互換兩個tuple變數的資料。使用方式如下:

auto t1 =

make_tuple(1

,2.2

,3.33);

auto t2 =

make_tuple(2

,3.3

,4.44);

t1.swap

(t2)

;// 交換元素值

swap

(t1, t2)

;// 交換元素值,包含標頭檔案

2、tie()

tie()介面的功能是建立乙個具有reference性質的tuple變數,也就是對tuple中元素的修改,會改變所引用的變數值。

使用場景如下:

int

main()

函式執行結果如下:

v1 =

100v2 =

200.222

v3 = string change

另外,如果只想將tuple中的某一項宣告為引用的話,可以使用std::ref() 介面來實現,使用如下:

int v1 =10;

string v2 =

"string test"

;auto i =

make_tuple

(v1, std::

ref(v2));

// 只將v2宣告為引用的形式

get<

1>

(i)=

"string changed"

;// 對tuple中第2個變數的修改也就是v2的修改

cout <<

"v2 = "

<< v2 << endl;

// v2 = string changed

3、tuple_cat()

使用tuple_cat()可以將多個tuple變數連線成為乙個tuple變數,類似於拼接字串一樣的處理,只不過此處處理的是多個tuple變數,使用方式如下:

int

main()

tuple可以和pair直接進行轉換賦值:

例如,宣告tuple變數時,直接以pair變數為初始值;或者直接將pair變數賦值給tuple,至於將tuple變數賦值給pair,是不可以直接進行賦值的,這種情況暫時不做討論。

pair<

int,

double

>p(

1,2.2)

;auto i =

make_tuple

(p);

// 使用pair來初始化tuple

i = p;

// 使用pair來為tuple賦值

p = i;

// error 不可以直接賦值

最後,如果使用get的時候,傳入無效的索引值,或越界的索引值,編譯器會進行報錯提示。

謝謝閱讀。

Python函式返回不定數量的值

python的函式是可以return多個值的,但其本質上還是返回單個值,只是利用了tuple的自動打包,將多個值打包成單個tuple返回。使用 驗證 def func a return 1,2,3,4 if name main temp func a print type temp 執行結果,確認返...

Python中的不定數量的函式引數

首先並不是必須寫成 args 和 kwargs。只有變數前面的 星號 才是必須的,不過更建議使用這兩個名字,可以讓別的程式設計師更容易理解。args是用來傳送乙個非鍵值對的可變數量的引數列表給乙個函式。def var args f arg,args print first arg f arg for...

如何使用 C 中的 Tuple

開局一張圖,首先宣告的是 tuple 不是什麼新鮮概念,在程式語言 f python 中早就有這個了,tuple 是一種 有序的,有限不可變的,支援混雜型別的固定個數的 一種資料結構,有些朋友可能就想問了,這裡的混雜是什麼意思?其實就是說 tuple 中的若干元素型別,即可以是同型別,也可以是不同型...