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元組。一元組類是存在的,但沒有對應的內建語法,所以單純的用括號把乙個值圍起來...