第十章 泛型演算法

2021-06-27 16:12:55 字數 541 閱讀 7479

特殊迭代器

插入迭代器

被繫結到乙個容器上,可用來向容器插入元素

流迭代器

被繫結到輸入/輸出流上,可用來遍歷所關聯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 這裡要注意的是謂詞的種類,...