C++STL总结——常用算法——拷贝和替换算法
包含头文件:algorithm
整合
//copy(begin_01, end_01, begin_02)
//容器内的指定范围的元素拷贝到另一个容器中
void copy_test() {
vector<int> v1;
vector<int> v2;
v1.push_back(10);
v1.push_back(30);
v1.push_back(20);
v1.push_back(40);
//目标容器需要提前开辟空间
v2.resize(v1.size());
copy(v1.begin(), v1.end(), v2.begin());
}
//replace(begin, end, old_value, new_value)
//将指定范围内的旧元素替换成新元素
void replace_test() {
vector<int> v;
v.push_back(20);
v.push_back(10);
v.push_back(30);
v.push_back(10);
v.push_back(50);
replace(v.begin(), v.end(), 10, 1000);
}
//replace_if(begin, end, function, new_value)
//按照条件替换元素,满足条件替换成指定元素
//第三个参数为仿函数,最后一个元素是新元素
class Greater_100 {
public:
bool operator() (int v) {
return v > 100;
}
};
void replace_if_test() {
vector<int> v;
v.push_back(10);
v.push_back(100);
v.push_back(95);
v.push_back(200);
v.push_back(96);
v.push_back(97);
replace_if(v.begin(), v.end(), Greater_100(), 999);
}
//swap(container, container):参数为两个容器,交换两个容器内的元素
void swap_test() {
vector<int> v1;
vector<int> v2;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
v2.push_back(i*2);
}
swap(v1, v2);
}
copy
//copy(begin_01, end_01, begin_02)
//容器内的指定范围的元素拷贝到另一个容器中
void copy_test() {
vector<int> v1;
vector<int> v2;
v1.push_back(10);
v1.push_back(30);
v1.push_back(20);
v1.push_back(40);
//目标容器需要提前开辟空间
v2.resize(v1.size());
copy(v1.begin(), v1.end(), v2.begin());
}
replace
//replace(begin, end, old_value, new_value)
//将指定范围内的旧元素替换成新元素
void replace_test() {
vector<int> v;
v.push_back(20);
v.push_back(10);
v.push_back(30);
v.push_back(10);
v.push_back(50);
replace(v.begin(), v.end(), 10, 1000);
}
replace_if
//replace_if(begin, end, function, new_value)
//按照条件替换元素,满足条件替换成指定元素
//第三个参数为仿函数,最后一个元素是新元素
class Greater_100 {
public:
bool operator() (int v) {
return v > 100;
}
};
void replace_if_test() {
vector<int> v;
v.push_back(10);
v.push_back(100);
v.push_back(95);
v.push_back(200);
v.push_back(96);
v.push_back(97);
replace_if(v.begin(), v.end(), Greater_100(), 999);
}
swap
//swap(container, container):参数为两个容器,交换两个容器内的元素
void swap_test() {
vector<int> v1;
vector<int> v2;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
v2.push_back(i*2);
}
swap(v1, v2);
}