c Primer 第十章 泛型演算法 重點梗概

2021-10-07 14:12:30 字數 579 閱讀 1853

演算法依賴於迭代器,而迭代器不依賴於容器,所以演算法不依賴於容器

但是演算法往往涉及比較,但是容器中的元素不一定定義了比較運算子,所以

大多數的演算法提供了一種方法,允許我們使用自定義的操作來代替預設的運算子

對於只讀取而不改變元素的演算法,最好使用cbegin() cend()

這裡要注意的是謂詞的種類,一元謂詞只能接收乙個引數,二元謂詞只能接收兩個引數。一元謂詞還是二元謂詞是由演算法本身決定的。

解決謂詞引數數量限制的一種方法

形式

[捕獲列表]

(引數列表)

->

return type

這部分雖然不常用但是全部都是重點

auto newcallable =

bind

(callable, arg_list)

這裡placeholder的概念很重要,_1, _2… 作為佔位符,接收引數,同時還可以巧用於重排引數順序。

反向迭代器是重點

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...

第十章 泛型演算法

特殊迭代器 插入迭代器 被繫結到乙個容器上,可用來向容器插入元素 流迭代器 被繫結到輸入 輸出流上,可用來遍歷所關聯io流 反向迭代器 向後而不是向前移動,除了forward list,容器都擁有它 移動迭代器 不是拷貝其中的元素,而是移動它們 插入迭代器操作 it t 在it指定的當前位置插入t,...