足跡C primer 34 泛型演算法結構

2021-09-30 11:05:51 字數 1107 閱讀 8870

泛型演算法結構

演算法所要求的迭代器操作可以分為5個迭代器類別。

輸入迭代器唯讀,不寫,單遍掃瞄,只遞增

輸出迭代器只寫,不讀,單遍掃瞄,只遞增

前向迭代器可讀寫,多遍掃瞄,只遞增

雙向迭代器可讀寫,多遍掃瞄,可遞增遞減

隨機訪問迭代器可讀寫,多遍掃瞄,,支援全部迭代器運算

輸入迭代器:可以讀取序列中的元素。

支援:==、!=、++、*(解引用)、->、(*it).member。

輸出迭代器:唯讀不寫

支援:++、*(解引用)

前向迭代器:可讀寫。

雙向迭代器:可正反雙向讀寫

隨機範圍迭代器:常量時間內範圍序列中任意元素。

一般演算法就下面4中形式:

alg(beg, end, other args);

alg(beg, end, dest, other args);

alg(beg, end, beg2, other args);

alg(beg, end, beg2, end2, other args);

接受謂詞引數來代替《或==運算的演算法,以及那些不接受額外引數的演算法,通常都是過載的函式。

find(beg, end,val);

//查詢輸入範圍內val第一次出現的位置

find_if(beg, end, pred);

//查詢第乙個令pred為真的元素

一般結果寫到額外的目的空間的演算法都在名字後面加_copy

reverse(beg,end);

//反轉輸入範圍中元素的順序

reverse_copy(beg, end, dest);

//將元素按逆序拷貝到dest

還有的提供_copy和_if版本

比如remove

有:remove_if、remove_copy_if兩個版本!!!!

ps:哼!!為毛我又一篇部落格消失了!!!被csdn吃了???我還沒存檔!!!尼瑪啊,要不要這麼坑,不過

C Primer筆記 泛型演算法

地點 基地 泛型演算法並不直接操作容器,而是遍歷兩個迭代器指定的乙個元素範圍,如此將演算法是作用容器分離,實現通用性。泛型演算法多數定義在標頭檔案algorithm中。比如我們想在vector下找到乙個特定值,可實現如下 include include includeusing namespace ...

C primer筆記 泛型演算法

1 泛型演算法 演算法是因為其實現了一些經典演算法的公共介面,如排序和搜尋。泛型是因為他們可以作用於不同型別的元素和多種容器型別甚至是內建陣列。故稱泛型演算法 2 基本上都定義在algorithm和numeric兩個標頭檔案中,這些演算法遍歷由兩個迭代器指定的乙個元素範圍來進行操作,不對容器進行直接...

C Primer 泛型演算法簡述

重排容器元素的演算法 泛型演算法 大多數演算法都定義在標頭檔案algorithm中,標準庫的標頭檔案numeric中定義了一組數值型演算法。泛型演算法的作用是通過迭代器間接訪問容器,不會執行容器的操作,只執行在迭代器之上,迭代器可以做什麼,泛型演算法就可以做什麼。迭代器演算法不依賴於容器,但演算法依...