C + + STL 中存在各种各样的 copy () ,允许以不同的方式执行复制操作,它们都有自己的用途。所有这些都在 头文件 < algorithm > 中定义。

1.Copy (strt _ iter1,end _ iter1,strt _ iter2) : 用于将一系列元素从一个容器复制到另一个容器的通用复制函数。

​strt_iter1 ​​​: The pointer to the beginning of the source container, from where elements have to be started copying. 指向源容器开头的指针,必须从这里开始复制元素
​​​end_iter1 ​​​: The pointer to the end of source container, till where elements have to be copied. 指向源容器末尾的指针,直到必须复制元素的位置
​​​strt_iter2 ​​: The pointer to the beginning of destination container, to where elements have to be started copying. 指向目标容器开头的指针,指向必须开始复制元素的位置

2.Copy _ n (strt _ iter1,num,strt _ iter2) : 这个版本的复制允许自由选择在目标容器中复制多少元素

​strt_iter1​​​: The pointer to the beginning of the source container, from where elements have to be started copying. 指向源容器开头的指针,必须从这里开始复制元素
​​​num​​​ : 数字: Integer specifying how many numbers would be copied to destination container starting from strt_iter1. If a negative number is entered, no operation is performed. 整数指定从 strt _ iter1开始将多少个数字复制到目标容器。如果输入负数,则不执行任何操作
​​​strt_iter2 ​​: The pointer to the beginning of destination container, to where elements have to be started copying. 指向目标容器开头的指针,指向必须开始复制元素的位置

// C++ code to demonstrate the working of copy()
// and copy_n()

#include<iostream>
#include<algorithm> // for copy() and copy_n()
#include<vector>
using namespace std;

int main()
{

// initializing source vector
vector<int> v1 = { 1, 5, 7, 3, 8, 3 };

// declaring destination vectors
vector<int> v2(6);
vector<int> v3(6);

// using copy() to copy 1st 3 elements
copy(v1.begin(), v1.begin()+3, v2.begin());

// printing new vector
cout << "The new vector elements entered using copy() : ";
for(int i=0; i<v2.size(); i++)
cout << v2[i] << " ";

cout << endl;

// using copy_n() to copy 1st 4 elements
copy_n(v1.begin(), 4, v3.begin());

// printing new vector
cout << "The new vector elements entered using copy_n() : ";
for(int i=0; i<v3.size(); i++)
cout << v3[i] << " ";

}

Output:

The new vector elements entered using copy() : 1 5 7 0 0 0 
The new vector elements entered using copy_n() : 1 5 7 3 0 0

3.Copy _ if () : 顾名思义,此函数根据“条件”的结果进行复制。这是在第4个参数的帮助下提供的,该参数是一个返回布尔值的函数。这个函数有4个参数,其中3个类似于 copy () ,还有一个附加函数,当返回 true 时,一个数字被复制,else 数字不被复制。

4.Copy _ back () : 这个函数开始从后向复制元素到目标容器中,并一直复制到所有数字都没有被复制为止。复制从“ strt _ iter2”开始,但是是向后的方向。它还接受与 copy ()类似的参数。