1.copy() 将一个区间元素复制到另一个区间
2.copy_if() 将满足谓词Pred条件的元素复制到另一个区间
3.copy_backward() 将区间的元素从最后一个元素开始复制
4.copy_n() 复制一个区间的n个元素到另一区间
5 move() 将区间的元素移到另一个区间
6.move_backward() 将区间元素从最后一个元素从后向前复制
7.transform() 将区间的元素通过func()的返回值复制到另一个(或相同)区间
8.merge() 将两个有序区间归并到另一个区间
9.swap_ranges() 交换两个区间的元素
10.fill() 将区间里元素以特定值填充
11.fill_n() 从起点开始填充n个特定值
12.generate() 以func操作的结果替换每一个元素
13.generate_n() 以func操作的结果替换以beg开始的n个元素
14.iota() 将区间元素以value值开始的递增值替换
15.replace() 将区间里oldvalue以newvalue替换
16.replace_if() 将区间里满足谓词Pred的oldvalue以newvalue替换
17.replace_copy() 将区间复制到另一区间但oldvalue以newvalue代替
18.replace_copy_if() 将区间复制到另一区间但满足谓词Pred的oldvalue以newvalue代替
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <array>
#include <numeric>
using namespace std;
// 1.copy() 将一个区间元素复制到另一个区间
// 2.copy_if() 将满足谓词Pred条件的元素复制到另一个区间
// 3.copy_backward() 将区间的元素从最后一个元素开始复制
// 4.copy_n() 复制一个区间的n个元素到另一区间
// 5 move() 将区间的元素移到另一个区间
// 6.move_backward() 将区间元素从最后一个元素从后向前复制
// 7.transform() 将区间的元素通过func()的返回值复制到另一个(或相同)区间
// 8.merge() 将两个有序区间归并到另一个区间
// 9.swap_ranges() 交换两个区间的元素
// 10.fill() 将区间里元素以特定值填充
// 11.fill_n() 从起点开始填充n个特定值
// 12.generate() 以func操作的结果替换每一个元素
// 13.generate_n() 以func操作的结果替换以beg开始的n个元素
// 14.iota() 将区间元素以value值开始的递增值替换
// 15.replace() 将区间里oldvalue以newvalue替换
// 16.replace_if() 将区间里满足谓词Pred的oldvalue以newvalue替换
// 17.replace_copy() 将区间复制到另一区间但oldvalue以newvalue代替
// 18.replace_copy_if() 将区间复制到另一区间但满足谓词Pred的oldvalue以newvalue代替
void test()
{
//1
//复制输入流到输出流
//copy(istream_iterator<int>(cin), istream_iterator<int>(),ostream_iterator<int>(cout, " "));
//
auto f = [](const int& v)
{
return v % 2 == 0;
};
//2
copy_if(istream_iterator<int>(cin), istream_iterator<int>(), ostream_iterator<int>(cout, " "), f);
//3
vector<int> a{ 1,2,3,4,5,6 };
array<int, 6> b;
copy_backward(a.begin(), a.end(), b.end());
for (auto &v : b)
cout << v << ends;
cout << endl;
//4
copy_n(a.begin(), 3, ostream_iterator<int>(cout, " "));
cout << endl;
vector<int> c;
//5
move(a.begin(), a.end(), back_inserter(c));
for (auto &v : c)
cout << v << ends;
cout << endl;
//6
array<int, 6> d;
move_backward(c.begin(), c.end(), d.end());
for (auto &v : d)
cout << v << ends;
auto f1 = [](int& v)
{
return v * v;
};
//7
transform(d.begin(), d.end(), d.begin(), f1);
cout << endl;
for (auto &v : d)
cout << v << ends;
//8
cout << endl;
vector<int> e;
merge(a.begin(), a.end(), b.begin(), b.end(), back_inserter(e));
for (auto &v : e)
cout << v << ends;
cout << ends;
//9
swap_ranges(a.begin(), a.begin() + 3, b.begin() + 3);
for (auto &v : a)
cout << v << ends;
//10
fill(a.begin(), a.end(), 3);
cout << endl;
for (auto &v : a)
cout << v << ends;
//11
fill_n(a.begin(), 3, 2);
cout << endl;
for (auto &v : a)
cout << v << ends;
auto f2 = [&]()
{
return *a.begin() + 1;
};
cout << endl;
//12
generate(a.begin(), a.end(), f2);
for (auto &v : a)
cout << v << ends;
//13
generate_n(a.begin(),3,f2);
cout << endl;
for (auto &v : a)
cout << v << ends;
//14
iota(a.begin(), a.end(), 5);
cout << endl;
for (auto &v : a)
cout << v << ends;
//15
replace(a.begin(), a.end(), 6, 5);
cout << endl;
for (auto &v : a)
cout << v << ends;
auto f3 = [](const int& v)
{
return v > 6;
};
//16
replace_if(a.begin(), a.end(), f3, 5);
cout << endl;
for (auto &v : a)
cout << v << ends;
//17
replace_copy(b.begin(), b.end(), a.begin(), 2, 7);
cout << endl;
for (auto &v : a)
cout << v << ends;
//18
replace_copy_if(a.begin(), a.end(), b.begin(), f3, 5);
cout << endl;
for (auto &v : b)
cout << v << ends;
}
int main()
{
test();
system("pause");
return 0;
}