特殊迭代器
插入迭代器
被繫結到乙個容器上,可用來向容器插入元素
流迭代器
被繫結到輸入/輸出流上,可用來遍歷所關聯io流
反向迭代器
向後而不是向前移動,除了forward_list,容器都擁有它
移動迭代器
不是拷貝其中的元素,而是移動它們
插入迭代器操作
it = t
在it指定的當前位置插入t,根據it繫結容器的不同分別會呼叫push_back,push_front或insert
*it,++it,it++
這些操作雖然存在,但不會對it做任何事情。每個操作都返回it
演算法要求迭代器類別
輸入迭代器
唯讀,不寫;單遍掃瞄,只能遞增
輸出迭代器
只寫,不讀;單遍掃瞄,只能遞增
前向迭代器
可讀寫;多遍掃瞄,只能遞增
雙向迭代器
可讀寫;多遍掃瞄,可遞增遞減
隨機訪問迭代器
可讀寫,多遍掃瞄,支援全部迭代器運算
c primer 筆記,第十章(泛型演算法)
accumulate第三個三處所傳的儲值的型別必須定義了 運算子,例如 將空串當作乙個字面值傳給第三個引數是不可以的 會導致編譯錯誤,const char 上並沒有定義 運算子 string sum accumulate v.cbegin v.cend string上定義了 運算子 string s...
c primer 第十章泛型演算法lambda
謂詞是乙個呼叫表示式,其返回結果是乙個能用做條件的值。標準庫演算法為此分為兩類 1 一元謂詞 意味著只能接受單一引數 2 二元謂詞 意味著他們有兩個引數 接受謂詞的演算法對輸入序列中的元素呼叫謂詞。因此元素型別必須能轉換為謂詞的引數型別。以sort和isshorter舉例 eg bool issho...
c Primer 第十章 泛型演算法 重點梗概
演算法依賴於迭代器,而迭代器不依賴於容器,所以演算法不依賴於容器 但是演算法往往涉及比較,但是容器中的元素不一定定義了比較運算子,所以 大多數的演算法提供了一種方法,允許我們使用自定義的操作來代替預設的運算子 對於只讀取而不改變元素的演算法,最好使用cbegin cend 這裡要注意的是謂詞的種類,...