拷贝
copy(iterator beg, iterator end, iterator dest)
- copy算法 将容器内指定范围的元素拷贝到另一容器中
- @param beg 容器开始迭代器
- @param end 容器结束迭代器
- @param dest 目标起始迭代器
#include <iterator> void test01() { vector<int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } vector<int> vTar; vTar.resize(v.size()); //拷贝到新容器 新容器需要定义空间大小 copy(v.begin(), v.end(), vTar.begin()); //for_each(vTar.begin(), vTar.end(), [](int v) { cout << v << " "; }); //拷贝并打印值 copy(vTar.begin(), vTar.end(), ostream_iterator<int>(cout, " ")); //需要 iterator头文件 }
按值替换
replace(iterator beg, iterator end, oldvalue, newvalue)
- replace算法 将容器内指定范围的旧元素修改为新元素
- @param beg 容器开始迭代器
- @param end 容器结束迭代器
- @param oldvalue 旧元素
- @param oldvalue 新元素
按条件替换
replace_if(iterator beg, iterator end, _callback, newvalue)
- replace_if算法 将容器内指定范围满足条件的元素替换为新元素
- @param beg 容器开始迭代器
- @param end 容器结束迭代器
- @param callback函数回调或者谓词(返回Bool类型的函数对象)
- @param oldvalue 新元素
void test02() { vector<int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } replace(v.begin(), v.end(), 3, 30); //把容器中的3替换成30 //根据值替换值 copy(v.begin(), v.end(), ostream_iterator<int>(cout, " ")); cout << endl; //根据条件替换值 replace_if(v.begin(), v.end(),bind2nd(greater<int>(), 3) , 300); //把容器中大于3的数替换成300 copy(v.begin(), v.end(), ostream_iterator<int>(cout, " ")); }
结果:
容器元素互换
swap(container c1, container c2)
- swap算法 互换两个容器的元素
- @param c1容器1
- @param c2容器2
void test03() { vector<int>v1; for (int i = 0; i < 10; i++) { v1.push_back(i); } vector<int>v2; v2.push_back(10); v2.push_back(30); v2.push_back(90); v2.push_back(70); cout << "交换前数据:" << endl; copy(v1.begin(), v1.end(), ostream_iterator<int>(cout, " ")); cout << endl; copy(v2.begin(), v2.end(), ostream_iterator<int>(cout, " ")); cout << endl; cout << "交换后数据:" << endl; swap(v1, v2); copy(v1.begin(), v1.end(), ostream_iterator<int>(cout, " ")); cout << endl; copy(v2.begin(), v2.end(), ostream_iterator<int>(cout, " ")); cout << endl; }
结果: