算法简介:
/*
函数原型:
copy(iterator beg ,iterator end,iterator dest);
把指定范围内的元素 拷贝到指定容器内
beg 开始迭代器
end 结束迭代器
dest 指定容器的开始迭代器
*/
void myPrint(int val) {
cout<<val<<" ";
}
void test01() {
vector<int> v;
v.push_back(10);
v.push_back(30);
v.push_back(50);
v.push_back(20);
v.push_back(40);
vector<int> v2;
//对于指定容器要提前开辟空间
v2.resize(v.size());
//拷贝
copy(v.begin(),v.end(),v2.begin());
for_each(v2.begin(), v2.end(), myPrint);
}
int main() {
test01();
system("pause");
return 0;
}
/*
函数原型:
replace(iterator beg ,iterator end,oldvalue ,newvalue);
将区间内旧元素替换成新元素
beg 开始迭代器
end 结束迭代器
oldvalue 旧元素
newvalue 新元素
*/
void myPrint(int val) {
cout<<val<<" ";
}
void test01() {
vector<int> v;
v.push_back(10);
v.push_back(30);
v.push_back(50);
v.push_back(20);
v.push_back(40);
cout<<" 替换前: " << endl;
for_each(v.begin(), v.end(), myPrint);
cout << "替换后: " << endl;
replace(v.begin(),v.end(),20,2000);
for_each(v.begin(), v.end(), myPrint);
//替换前:
//10 30 50 20 40
//替换后:
//10 30 50 2000 40
}
int main() {
test01();
system("pause");
return 0;
}
/*
函数原型:
replace_if(iterator beg ,iterator end,_pred,newvalue);
按条件替换,满足条件的替换成指定元素
beg 开始迭代器
end 结束迭代器
_pred 谓词
newvalue 新元素
*/
void myPrint(int val) {
cout<<val<<" ";
}
class Great30 {
public:
bool operater()(int val){
return val >= 30;
}
};
void test01() {
vector<int> v;
v.push_back(10);
v.push_back(30);
v.push_back(50);
v.push_back(20);
v.push_back(40);
//将大于等于30 替换为3000
cout<<" 替换前: " << endl;
for_each(v.begin(), v.end(), myPrint);
cout << "替换后: " << endl;
replace_if(v.begin(),v.end(), Great30(), 2000);
for_each(v.begin(), v.end(), myPrint);
}
int main() {
test01();
system("pause");
return 0;
}
/*
函数原型:
swap(container c1 ,container c2);
互换两个容器的元素
注意:互换的两个容器必须是同类型的
c1 容器1
c2 容器2
*/
void myPrint(int val) {
cout<<val<<" ";
}
void test01() {
vector<int> v1;
vector<int> v2;
for (int i = 0; i < 10; i++) {
v1.push_back(i);
v2.push_back(i+102);
}
cout<<" 交换前: " << endl;
for_each(v1.begin(), v1.end(), myPrint);
cout << endl;
for_each(v2.begin(), v2.end(), myPrint);
cout << endl;
cout << "交换后: " << endl;
swap(v1, v2);
for_each(v1.begin(), v1.end(), myPrint);
cout << endl;
for_each(v2.begin(), v2.end(), myPrint);
}
int main() {
test01();
system("pause");
return 0;
}