真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++元組(tuple)類型-創(chuàng)新互聯(lián)

C++元組tuple類型 介紹

元組tuple是C++的一個(gè)模板,不同tuple類型的成員類型也不相同,但是一個(gè)tuple可以有任意數(shù)量的成員。

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為那坡企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),那坡網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

每個(gè)tuple類型的成員個(gè)數(shù)是一定的,但是不同的tuple成員個(gè)數(shù)可以不同。

tuple的定義及初始化

使用tuple要引入tuple頭文件

#include

tuple定義以及初始化(我們這里以成員類型為int、string、vector為例子)

tuple>test{1,"hello,world",{4,5,6}};

當(dāng)然也可以使用它的構(gòu)造函數(shù)進(jìn)行初始化

tuple>test(1,"hello,world",{4,5,6});

存在這種情況,表面上看起來(lái)沒(méi)有進(jìn)行任何初始化操作,但實(shí)際上利用了不帶參數(shù)的默認(rèn)構(gòu)造函數(shù)

tupletest;	//每個(gè)成員的值為0

當(dāng)然如果你這樣定義后,又想對(duì)test的初始值所作更改,可以這樣寫(xiě),如下所示。(實(shí)際上現(xiàn)在的test不是原來(lái)的test,它被你新創(chuàng)建的tuple對(duì)象所替代了,嚴(yán)格意義來(lái)講并不算是初始化)

tupletest;	//每個(gè)成員的值為0
test = tuple(1,2);	//第一個(gè)成員的值為1,第二個(gè)成員的值為2

另外標(biāo)準(zhǔn)庫(kù)定義了make_tuple函數(shù)來(lái)生成tuple對(duì)象,我們可以用auto關(guān)鍵字來(lái)推測(cè)生成的tuple的類型

auto test2 = make_tuple(3.14,"wasd");

如果要添加一個(gè)vector作為成員,則情況如下

//錯(cuò)誤寫(xiě)法
auto test2 = make_tuple(3.14,"wasd",{3,4,5 });
//正確寫(xiě)法
vectornums = {3,4,5 };
auto test2 = make_tuple(3.14,"wasd",nums);
tuple的使用 成員訪問(wèn)

說(shuō)起tuple的使用,最能直接想到的自然是對(duì)tuple的訪問(wèn)了。

在C++標(biāo)準(zhǔn)庫(kù)里,有一個(gè)名為get的函數(shù)模板。為了使用get,我們必須指定一個(gè)顯式模板實(shí)參來(lái)指示訪問(wèn)的第幾個(gè)成員,并在函數(shù)參數(shù)中給予它一個(gè)tuple對(duì)象。

tuple>test{1,"hello,world",{4,5,6} };
cout<< get<0>(test)<< endl;		//打印test第一個(gè)成員,其類型為int
cout<< get<1>(test)<< endl;		//打印test第二個(gè)成員,其類型為string
cout<< get<2>(test)[0]<< endl;	//打印test第三個(gè)成員vector的第一個(gè)元素

下面是返回結(jié)果

1
hello,world
4   
獲取tuple信息

可用以下方法獲取tuple元素個(gè)數(shù)

tuple>test{1,1.23,{"123","456"}};
//獲取tuple成員個(gè)數(shù)
size_t num = tuple_size::value;
//利用tuple某個(gè)成員類型來(lái)聲明變量(以第0個(gè)成員為例)
tuple_element<0, decltype(test)>::type n = get<0>(test);
拼接tuple
tupletest(1,2,3);
tupletest2(4,5,6);
tupletest3(7,8,9);

//拼接
auto new_tup = tuple_cat(test, test2, test3);
交換tuple
tupletest(1,2,3);
tupletest2(4,5,6);

//交換
test.swap(test2);
tuple解包

tuple使用tie方法進(jìn)行解包,tie的參數(shù)個(gè)數(shù)與tuple成員個(gè)數(shù)一致,否則要用ignore占位

tupletest{2,8};
tupletest2{2,8,6};
int a, b;

//解包
tie(a, b) = test;
//ignore占位的情況
tie(a, b, ignore) = test2;
tuple比較

當(dāng)兩個(gè)tuple具有相同數(shù)目的成員,且對(duì)應(yīng)成員類型可比較的時(shí)候,tuple比較才合法

//有如下四個(gè)tuple
tupletest{"1","2"};
tupletest2{1,2,3 };
tupletest3{1,2};
tupletest4{4,5 };

test == test2;	//報(bào)錯(cuò),string與int類型不能比較
test2< test3;	//報(bào)錯(cuò),test2與test3成員數(shù)量不同
test3< test4;	//正確,該語(yǔ)句值為True

tuple比較方式是對(duì)應(yīng)位置比較,如果該位置值不相等,則返回當(dāng)前位置的值的比較結(jié)果,不再繼續(xù)進(jìn)行比較;如果值相等則繼續(xù)比較下一個(gè)位置

tupletest5{1,4};
tupletest6{2,3};

test5< test6  //正確,1與2不相等,直接返回1<2比較結(jié)果true,不比較4和3
tuple遍歷

tuple沒(méi)有迭代器,其遍歷非常麻煩,其設(shè)計(jì)目的也不在于此(如果項(xiàng)目開(kāi)發(fā)過(guò)程中要對(duì)某一數(shù)據(jù)結(jié)構(gòu)進(jìn)行遍歷該數(shù)據(jù)結(jié)構(gòu)應(yīng)盡量避免為tuple類型,完全可以用list代替)

但此處還是給出遍歷的方法(不推薦使用)

本方法來(lái)自C++Tuple元組的詳細(xì)用法 - 知乎 (zhihu.com)

#include#include#include 
#includeusing namespace std;

templatestruct PrintTuple
{static void Printf(const Tuple& Value)
	{PrintTuple::Printf(Value);
		cout<< ","<< get(Value);
	}
};

templatestruct PrintTuple{static void Printf(const Tuple& Value)
	{ cout<< get<0>(Value);
	}
};

templatevoid PrintfMyTuple(const tuple& vlaue)
{  PrintTuple::Printf(vlaue);
}

int main()
{tuplea(2, 3, 1, 4);
	PrintfMyTuple(a);
	system("pause");

	return 0;
}
tuple開(kāi)發(fā)時(shí)的應(yīng)用

在項(xiàng)目開(kāi)發(fā)時(shí),如果我們想讓一個(gè)函數(shù)返回多個(gè)不同類型的值的話可以使用tuple。

至于其他情況有待探索。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享題目:C++元組(tuple)類型-創(chuàng)新互聯(lián)
本文地址:http://weahome.cn/article/dcojdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部