tuple是tr1引入的,它擴充套件了pair的概念,可以擁有任意數量的元素。
tuple的構建與元素訪問:
tuplet1(41,6.3,"niconiconi")
auto t2 = make_tuple(22,44,"niconiconi");
get<0>(t1);
get<1>(t1);
注1:tuple的元素型別可以是引用:
string s;
tuplet(s);
get<0>(t) = "hello"; //s也被賦值為"hello"
注2:tuple不允許迭代元素。tuple必須在編譯器知道元素的索引值, 如果在執行期才傳入索引值
是不被允許的:
int i=0;
get(t); //編譯報錯:i is no compile-time value
另:如果給的是無效索引,在編譯期就會報錯,故不用擔心超出範圍
注3:在tuple的各個建構函式中,接收不定個數的實參的版本被宣告為explicit,這是為了避免單
個值被隱式轉換為「帶著乙個元素的」tuple:
template
void foo(const std::tuplet);
foo(21); //error
foo(make_tuple(42));
在這種情況下,就不可以通過賦值將某個tuple初始化,因為這樣會被視為乙個隱式轉換:
std::tuplet3 = ; //error
也不可以這樣:
std::vector> v, };
或這樣:
std::tuplefoo();}
綜上可知:對於tuple,必須明確指明該值為乙個tuple(例如:可以運用make_pair)
運用引用搭配make_tuple()可以提取tuple的元素值,將某些變數值設給它們:
std::tuplet(77,1.1, "more light");
int i;
float f;
std::string s;
auto t1 = std::make_tuple(std::ref(i), std::ref(f), std::ref(s)) = t;
這樣就可以通過修改變數i、f、s的值修改t1;
也可以通過std::tie,它可以建立乙個內含引用的tuple
std::tie(i,f,s) = t;
使用std::tie時,std::ignore允許忽略tuple的某些元素,也就是可以只提取tuple的一部分:
std::tie(i,std::ignore,s) =t;
tuple的其他特性:
tuple_size::value //獲取元素個數
tuple_element::type //獲取第idx個元素的型別
tuple_cat() //可將多個tuple串聯成乙個tuple
C 標準庫和C 標準模版庫
c 標準庫很大,在現在的情況下,c 標準庫確實越來越好,因為大的庫會包含大量的功能.標準庫中的功能越多,開發自己的應用程式時能借助的功能就越多,c 庫並非提供一切 很明顯的是沒有提供開發和圖形使用者介面的支援 但確實提供了很多.標準c 庫中主要有以下主要元件 標準c庫.i 0流技術.string.容...
C 新手關於標準庫學習筆記
c 中定義了乙個內容豐富的抽象資料型別標準庫,其中最重要的是string和vector,他們分別定義了大小可變的字串和集合。下面分別詳細講解兩者還有bitset的一些基本用法。新手記錄的東西都很瑣碎,沒辦法 標準庫string型別 讀寫 標準輸入讀取string型別 cin s 忽略開頭所有空白字元...
C 標準IO庫 C Primer學習筆記
頭檔案型別 iostream istream 從流中讀取 ostream 寫到流中去 iostream對流進行讀寫,從istream和ostream派生而來 fstream ifstream 從檔案中讀取,由istream派生而來 ofstream 寫到檔案中去,由ostream派生而來 fstre...