本博客知識記錄自己學習中的筆記或者記錄,如果有錯誤歡迎大家糾正。
本節主要學習算法形參模式和算法命名規範
alg(beg,end,other args);
alg(beg,end,dest,other args);
alg(beg,end,beg2,oher args);
alg(beg,end,beg2,end2,other args);
alg 算法名稱, beg 和end表示算法所操作的範圍,幾乎所有的算法都接受一個輸入範圍,oher args表示算法還接受一些額外的參數,beg2,end2是第二範圍 ,dest是目標迭代器,。
一些算法使用重載形式傳遞一個謂詞
unique (beg,end) //使用==運算符比較元素
unique(beg,end,comp) 使用comp比較元素
_if版本算法
find(beg,end,val) //查找輸入範圍中var第一次出現的位置
find_if(beg,end,pred);//查找第一個令pred爲真的值
區分拷貝元素的版本和不拷貝元素的版本
reverse(beg,end)//反轉輸入範圍中的元素的順序
reverse_copy(beg,end,dest)//將元素按逆序拷貝到dest中
一些算法同事提供_copy_if 版本
//從v1中刪除奇數元素
remove_if(v1.begin(),v1.end(),[](int i){return i%2;});
//將偶數元素v1拷貝到v2;v1不變
remove_copy_if(v1.begin(),v1.end(),back_inserter(v2),[](int i){return i%2;});
習題練習
10.41 根據算法和參數名稱,描述下面每個標準庫算法執行什麼操作
replace(beg,end,old_val,new_val)
替換[beg,end)範圍內所有的old_val爲new_val;
replace(beg,end,pred,new_val)
替換[beg,end)範圍內所有的pred爲真的值爲new_val;
replace_copy(beg,end,dest,old_val,new_val)
替換[beg,end)範圍內所有的old_val值爲new_val並copy到dest中,原來的不變;
replace_copy_if(beg,end,dest,pred,new_val);
替換[beg,end)範圍內所有的pred值爲真爲new_val並copy到dest中,原來的不變;