C 筆記 tuple元組

2021-09-12 14:44:32 字數 1569 閱讀 5857

tuple是類似pair的模板,可以包含任意數量的成員。

tuplet    t是乙個tuple,成員數為n,第i個成員的型別為ti。所有成員都會進行值初始化。

tuplet(v1, v2, ..., vn) t是乙個tuple,同時第i個成員型別為ti,使用vi進行初始化

make_tuple(v1, v2, ..., vn) 返回乙個由給定值初始化的tuple,每個型別由編譯器依據初始值推斷

get(t) 返回t的第i個元素的引用:如果t是乙個左值,結果是乙個左值引用;否則,結果是乙個右值引用。

tuple的所有成員都是public的

tuple_size::value 乙個類模板,可以通過乙個tuple型別來初始化。

型別為size_t,表示給定tuple型別中成員的數量。

tuple_element::type 乙個類模板,可以通過乙個整型常量和乙個tuple型別來初始化。

表示給定tuple型別中指定成員的型別。

使用tuple返回多個值。

tuple的乙個常見用途是從乙個函式返回多個值。

例如:在乙個多家連鎖的書店中,每家書店都有乙個銷售記錄檔案,我們希望在所有書店中查詢某本書的銷售情況

為每個書店建立乙個vector,並將這些vector儲存在乙個vector中

//file中的乙個元素為一家書店的銷售記錄

vevtor> files;

//將編寫乙個函式,對於一本給定的書,在file中搜尋**過這本書的書店。

//對每家的銷售記錄,我們將建立乙個tuple來儲存這家書店的索引和兩個迭代器

//索引指出該家書店在file中的尾置,兩個迭代器標記了書店的第一條銷售記錄和最後一條銷售記錄

//matches有三個成員:一家書店索引,兩個指向書店vector中元素的迭代器

typedef tuple::size_type,

vector::const_iterator,

vector::const_iterator> matches;

//file儲存每家書店的銷售記錄

//findbook返回乙個vector,每家銷售了給定書籍的書店都在其中

vectorfindbook(const vector> &file, const string &book)

//如果未匹配到,ret為空

return ret;

}

//使用返回的tuple列印銷售資訊

void reportresults(istream &in, osream &os, const vector> &files)

for(const auto &store : trans) //對每家銷售了給定書籍的書店

//get返回store中tuple的指定成員

os << "store " << get<0>(store) << " sales: " << accumulate(get<1>(store), get<2>(store), sale_data(s)) << endl;

}}

C 新特性元組 tuple

python程式設計師一定對元組這個詞非常熟悉,python中的元組很強大,剛接觸python時我一直認為python中的元組是對c 陣列的封裝,吸收了c 的陣列的精華並進行了擴充套件。c 11以後直接增加了元組這個資料結構,或許是c 標準制定者看到了python中元組的方便,索性也直接吸收了吧。自...

列表 元組(tuple)

1.建立和訪問元組 temp 1,2,3,4,5,6 temp 1 2 temp 5 6,temp 2 3,4,5,6 temp2 temp 1 temp2 2,3,4,5,6 元組的訪問同列表一樣 2.元組不能被修改 temp 1 9 traceback most recent call last...

Scala學習筆記之元組 Tuple

元組是scala提供的一種特殊的資料結構,或者說是一塊語法糖,它允許多個不同型別的元素組合在一起被使用,如下所示 val tup 1,3.14,元組 true 這是乙個四元組,由4個元素組成。scala目前的版本支援最多22元組。一元組類是存在的,但沒有對應的內建語法,所以單純的用括號把乙個值圍起來...