標籤:c++常用術語 c++
(1)back_inserter 這是一個迭代器適配器,它接受一個指向容器的引用,產生一個插入迭代器,當我們通過此迭代器賦值時,賦值運算子會調用push_back將一個具有給定值的元素添加到容器中。
例如: vector<int> vec; //空向量
auto it = back_inserter(vec); //通過插入迭代器 it 賦值會將元素添加到vec中
*it = 42; //vec中現在有一個元素,值為42
(2)雙向迭代器(bidirectional iterator):支援前向迭代器的所有操作,還具有用 -- 在序列中反向移動的能力。
(3)二元謂詞(binary predicate)接受兩個參數的謂詞。謂詞是一個可調用的運算式,其返回結果是一個能用作條件的值。
(4)bind 標準庫函數,可將bind看做一個通用的函數適配器,它接受一個可調用對象,產生一個新的可調用對象來“適應”原對象的參數列表。bind將一個或多個參數綁定到一個可調用運算式。bind 定義在標頭檔functional 中。
調用bindde 一般形式為:
auto newCallable = bind(callable, arg_list);
其中,newCallable 本身是一個可調用對象,arg_list是一個逗號分隔的參數列表,對應給定的callable的參數。即,當我們調用newCallable時,newCallable會調用callable,並傳遞給它arg_list中的參數。arg_list中的參數可能包含形如_n的名字,其中n是一個整數。這些參數是“預留位置”,表示newCallable的參數,它們佔據了傳遞給newCallable的參數的“位置”。數值n表示產生可調用對象中參數的位置:_1為newCallable的第一個參數,_2為第二個參數,以此類推。
(5)lambda 運算式 (lambda expression):可調用的代碼單元。一個lambda類似一個未命名的內嵌函式。一個lambda以一個捕獲列表開始,此列表允許lambda訪問所在的函數中的變數。類似函數,lambda有一個(可能為空白的)參數列表、一個傳回型別和一個函數體。lambda可以忽略傳回型別。如果函數體是一個單一的return語句,傳回型別就從返回對象的類型推斷。否則,忽略的傳回型別預設為void。
一個lambda必須使用尾置返回來指定傳回型別,其一般形式為:
[capture list] (parameter list) -> rerurn type { function body }
其中,我們可以忽略參數列表和傳回型別,但必須永遠包含捕獲列表和函數體。
auto f = [ ] {return 42;}; //此例中,我們定義了一個可調用對象f,它不接受參數,返回42//lambda的調用方式與普通函數的調用方式相同,都是使用調用運算子:cout<<f()<<endl; //列印42
(6)可調用對象(callable object)可以出現在調用運算子左邊的對象。函數、函數指標、lambda運算式以及重載了函數調用運算子的類的對象都是可調用對象。
(7)cref/ref 標準庫函數,返回一個可拷貝的對象,其中儲存了一個指向不可拷貝類型的const對象的引用。它也是定義在標頭檔functional中的。
(8)front_inserter 迭代器適配器,給定一個容器,產生一個push_front向容器開始位置添加元素的插入迭代器。
(9)泛型演算法(generic algorithm)類型無關的演算法。
(10)前向迭代器(forward iterator)可以讀寫元素,但不必支援--的迭代器。
(11)輸入迭代器(input iterator)可以讀但不能寫序列中元素的迭代器。
(12)插入迭代器(insert iterator)迭代器適配器,產生一個迭代器,該迭代器使用容器操作向給定容器添加元素。
(13)插入器(inserter)迭代器適配器,接受一個迭代器和一個指向容器的引用,產生一個插入迭代器,該插入迭代器用insert在給定迭代器指向的元素之前的位置添加元素。
(14)移動迭代器(move iterator)迭代器適配器,產生一個迭代器,該迭代器移動而不是拷貝元素。
(15)istream_iterator 讀取輸入資料流的流迭代器。
例如:下面是一個用istream_iterator 從標準輸入中讀取資料,存入一個vector中的例子:
istream_iterator<int> in_iter(cin); //從cin讀取intistream_iterator<int> eof; //istream的尾後迭代器while (in_iter != eof) //當資料可供讀取時{ //後置遞增運算讀取流,返回迭代器的舊值 //解引用迭代器,獲得從流讀取的前一個值 vec.push_back(*in_iter++);可以把程式改為如下形式,用一對錶示元素範圍的迭代器來構造vec。
istream_iterator<int> in_iter,eof; //從cin讀取intvector<int> vec(in_iter, eof); //從迭代器範圍構造vec
(16)ostream_iterator 寫輸出資料流的迭代器。
(17)隨機訪問迭代器(random-access iterator)支援雙向迭代器的所用操作再加上比較迭代器值的關係運算子、下標運算子和迭代器上的算術運算,因此支援隨機訪問元素。
(18)反向迭代器(reverse iterator)在序列中反向移動的迭代器。這些迭代器交換了++ 和 -- 的含義。
(19)流迭代器(istream iterator)可以綁定到一個流的迭代器。
(20)一元謂詞(unary predicate)接受一個參數的謂詞。謂詞是一個可調用的運算式,其返回結果是一個能用作條件的值。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
C++常用術語及其英文翻譯的含義和簡單用途總結(八)