STL学习(18):变异算法

  1. 复制
  2. 交换
  3. 变换
  4. 替换
  5. 填充
  6. 生成
  7. 删除
  8. 唯一
  9. 反转
  10. 环移
  11. 随机
  12. 划分

变异算法,即变异函数的主要特点是修改容器中的元素。如修改容器中的元素值,改变容器中的元素序列等。按照功能划分如下所示

序号

功能

函数名称

说明

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
}

猜你喜欢

转载自blog.csdn.net/QQ2558030393/article/details/93479361