replace(b, e, ov, nv)
replace_if(b, e, p, v)
// 一边复制一遍替换
replace_copy(b1, e1, b2, ov, nv)
replace_copy_if(b1, e1, b2, p, v) // 带有一个函数对象或者规则
#include<iostream> #include<algorithm> #include<list> // #include<functional> using namespace std; int main() { list<int> ilist; for (int i = 2; i <= 7; i++) ilist.push_back(i); for (int i = 4; i <= 9; i++) ilist.push_back(i); for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++) cout << *iter << ' '; cout << endl; replace(ilist.begin(), ilist.end(), 6, 42); for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++) cout << *iter << ' '; cout << endl; replace_if(ilist.begin(), ilist.end(), bind2nd(less<int>(), 5), 0); for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++) cout << *iter << ' '; cout << endl; // system("pause"); return 0; }
预定义的函数对象
negate<type>() // 求反
plus<type>()
minus<type>()
multiplies<type>()
modulus<type>()
equal_to<type>()
not_equal_to<type>()
less<type>()
greater<type>()
less_equal<type>() // <=
greater_equal<type>()
logical_not<type>()
logical_and<type>()
logical_or<type>()
预定义的函数适配器
bind1st(op, value)
bind1st(op, value)
not1(op)
not2(op)
mem_fun_ref(op)
mem_fun(op)
ptr_fun(op)
STL-算法 修改性算法:
for_each() generate()
copy() generate_n()
copy_backwards() replace()
transform() replace_if()
merge() replace_copy()
swap_ranges() replace_copy_if()
fill()
fill_n()
#include<iostream> #include<algorithm> #include<list> // #include<functional> #include<iterator> using namespace std; int main() { list<int> ilist; for (int i = 2; i <= 7; i++) ilist.push_back(i); for (int i = 4; i <= 9; i++) ilist.push_back(i); for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++) cout << *iter << ' '; cout << endl; replace(ilist.begin(), ilist.end(), 6, 42); for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++) cout << *iter << ' '; cout << endl; replace_if(ilist.begin(), ilist.end(), bind2nd(less<int>(), 5), 0); for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++) cout << *iter << ' '; cout << endl; list<int> ilist2; for (int i = 2; i <= 6; i++) ilist2.push_back(i); for (int i = 4; i <= 9; i++) ilist2.push_back(i); for (list<int>::iterator iter = ilist2.begin(); iter != ilist2.end(); iter++) cout << *iter << ' '; cout << endl; replace_copy(ilist2.begin(), ilist2.end(), ostream_iterator<int>(cout, " "), 5, 55); cout << endl; replace_copy_if(ilist2.begin(), ilist2.end(), ostream_iterator<int>(cout, " "), bind2nd(less<int>(), 5), 42); cout << endl; replace_copy_if(ilist2.begin(), ilist2.end(), ostream_iterator<int>(cout, " "), bind2nd(modulus<int>(), 2), 0); // system("pause"); return 0; }
时间: 2024-11-06 03:37:08