第十六篇:泛型演算法結構

穆晨發表於2017-01-26

前言

       C++提供了很多演算法(超過一百個),要想掌握這些演算法的使用需要將它們都死記下來嗎?當然不用了,本文將為你剖析泛型演算法的基本結構,讓你以後對這些演算法做到“ 望名生義 ”。

演算法的形參結構

       絕大多數演算法的形參採用以下四種形式之一:

       1. 演算法名 ( 起始迭代器, 末端迭代器, 其他引數 )

       說明:起始迭代器和末端迭代器標識了演算法的輸入範圍,其他引數與演算法特性有關。

       2. 演算法名 ( 起始迭代器, 末端迭代器, 插入迭代器/流迭代器, 其他引數 )

       說明:起始迭代器和末端迭代器標識了演算法的輸入範圍,插入迭代器/流迭代器標識了輸出物件(其範圍假定和輸入範圍一樣大),其他引數與演算法特性有關。

       3. 演算法名 ( 起始迭代器1, 末端迭代器1, 起始迭代器2, 其他引數 )

       說明:起始迭代器1和末端迭代器1標識了演算法的輸入範圍1,起始迭代器2標識了演算法的輸入範圍2(其範圍假定和輸入範圍一樣大),其他引數與演算法特性有關。

       4. 演算法名 ( 起始迭代器1, 末端迭代器1, 起始迭代器2, 末端迭代器2, 其他引數 )

       說明:起始迭代器1和末端迭代器1標識了演算法的輸入範圍1,起始迭代器2和末端迭代器2標識了演算法的輸入範圍2,其他引數與演算法特性有關。

演算法的命名結構

       1. 演算法名帶_if字尾:表示該演算法需要使用謂詞函式(相較於無_if版本)。

       2. 演算法名帶_copy字尾:表示該演算法會將結果輸出到別的位置,而不會破壞輸入範圍內的資料(相較於無_copy版本)。

相關文章