- 复制
- 交换
- 变换
- 替换
- 填充
- 生成
- 删除
- 唯一
- 反转
- 环移
- 随机
- 划分
变异算法,即变异函数的主要特点是修改容器中的元素。如修改容器中的元素值,改变容器中的元素序列等。按照功能划分如下所示
序号 |
功能 |
函数名称 |
说明 |
1 |
复制 |
copy: |
从序列的第一个元素起进行复制 |
copy_backward |
从序列的最后一个元素起进行复制 |
||
2 |
交换 |
swap |
交换两个元素 |
swap_ranges |
交换指定范围的元素 |
||
iter_swap |
交换由迭代器所指的两个元素 |
||
3 |
变换 |
transform |
将某操作应用于指定范围的每个元素 |
4 |
替换 |
replace |
用一个给定值替换一些值 |
replace_if |
替换满足谓词的一些元素 |
||
replace_copy |
复制序列时用一给定值替换元素 |
||
replace_copy_if |
复制序列时替换满足谓词的元素 |
||
5 |
填充 |
fill fill_n |
用一给定值取代所有元素 |
用一给定值取代前n个元素 |
|||
6 |
生成 |
generate |
用一操作的结果取代所有元素 |
generate_n |
用一操作的结果取代前n个元素 |
||
7 |
删除 |
remove |
删除具有给定值的元素 |
remove_if |
删除满足谓词的元素 |
||
remove_copy |
复制序列时删除具有给定值的元素 |
||
remove_copy_if |
复制序列时删除满足谓词的元素 |
||
8 |
唯一 |
unique |
删除相邻的重复元素 |
unique_copy |
复制序列时删除相邻的重复元素 |
||
9 |
反转 |
reverse |
反转元素的次序 |
reverse_copy |
复制序列时反转元素的次序 |
||
10 |
环移 |
rotate |
循环移动元素 |
rotate_copy |
复制序列时循环移动元素 |
||
11 |
随机 |
random_shuffle |
采用均匀分布来随机移动元素 |
12 |
划分 |
partition |
将满足某谓词的元素都放到前面 |
stable_partition |
将满足某谓词的元素都放到前面并维持原顺序 |
复制
主要函数
①copy 原型:
template<class InIt, class OutIt>
OutIt copy(InIt first, InIt last, OutIt x);
该函数功能是“正向---正向”拷贝,把输入迭代器[first, last)间的元素依次拷贝到输出迭代器x中,并返回输出迭代器的尾指针。 ②copy_backward 原型:
template<class BidIt1, class BidIt2>
BidIt2 copy_backward(BidIt1 first, BidIt1 last, BidIt2 x);
该函数功能是“反向---反向”拷贝,把BidIt1中的(last, first]间元素依次拷贝到写双向迭代器 x中,返回写功能输出迭代器的首指针。
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
void main()
{
int a[5] = {1,2,3,4,5};
int b[5];
vector<int> v;
copy(a, a+5, b); //a数组拷贝到b数组
copy(a, a+5, back_inserter(v));//a数组拷贝到向量vector中
cout<< "原始a数组为: " ; //显示原始数组
copy(a, a+5, ostream_iterator<int>(cout, "\t")); cout << endl; //1 2 3 4 5
cout<< "b数组为: " ; //显示拷贝后的b数组
copy(b, b+5, ostream_iterator<int>(cout, "\t")); cout << endl; //1 2 3 4 5
cout << "vector向量为: "; //显示拷贝后的向量
copy(v.begin(), v.end(), ostream_iterator<int>(cout, "\t")); cout << endl;//1 2 3 4 5
}