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. 指向目标容器开头的指针,指向必须开始复制元素的位置
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
vector<int> v1 = { 1, 5, 7, 3, 8, 3 };
vector<int> v2(6);
vector<int> v3(6);
copy(v1.begin(), v1.begin()+3, v2.begin());
cout << "The new vector elements entered using copy() : ";
for(int i=0; i<v2.size(); i++)
cout << v2[i] << " ";
cout << endl;
copy_n(v1.begin(), 4, v3.begin());
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 ()类似的参数。
|