本文概述
C++ STL中存在各种copy()品种, 它们允许以不同的方式执行复制操作, 所有这些都有自己的用途。这些都在头文件<algorithm>中定义。本文向所有人介绍这些功能, 以供日常编程中使用。
1.copy(strt_iter1, end_iter1, strt_iter2):通用复制函数,用于将一段元素从一个容器复制到另一个容器。它有3个参数:
- strt_iter1:指向源容器起点的指针, 必须从此处开始复制元素。
- end_iter1:指向源容器末尾的指针, 直到必须复制元素的位置。
- strt_iter2:指向目标容器开始的指针, 指向必须开始复制元素的位置。
2. copy_n(strt_iter1, num, strt_iter2):此版本的副本使你可以自由选择必须在目标容器中复制多少个元素。 IT还接受3个论点:
- strt_iter1:指向源容器起点的指针, 必须从此处开始复制元素。
- 编号:整数, 指定从strt_iter1开始将多少个数字复制到目标容器。如果输入负数, 则不执行任何操作。
- strt_iter2:指向目标容器开始的指针, 指向必须开始复制元素的位置。
CPP
//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] <<" " ;
}
输出如下:
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个参数,其中3个类似于copy(),还有一个附加函数,当返回true时,复制一个数字,否则number不复制。
4. copy_backward():这个函数开始将元素反向复制到目标容器中,并一直复制,直到没有复制所有数字为止。复制从” strt_iter2 “开始,但是是向后的。它还接受与copy()类似的参数。
CPP
//C++ code to demonstrate the working of copy_if()
//and copy_backward()
#include<iostream>
#include<algorithm> //for copy_if() and copy_backward()
#include<vector>
using namespace std;
int main()
{
//initializing source vector
vector<int> v1 = { 1, 5, 6, 3, 8, 3 };
//declaring destination vectors
vector<int> v2(6);
vector<int> v3(6);
//using copy_if() to copy odd elements
copy_if(v1.begin(), v1.end(), v2.begin(), []( int i){ return i%2!=0;});
//printing new vector
cout <<"The new vector elements entered using copy_if() : " ;
for ( int i=0; i<v2.size(); i++)
cout <<v2[i] <<" " ;
cout <<endl;
//using copy_backward() to copy 1st 4 elements
//ending at second last position
copy_backward(v1.begin(), v1.begin() + 4, v3.begin()+ 5);
//printing new vector
cout <<"The new vector elements entered using copy_backward() : " ;
for ( int i=0; i<v3.size(); i++)
cout <<v3[i] <<" " ;
}
输出如下:
The new vector elements entered using copy_if() : 1 5 3 3 0 0
The new vector elements entered using copy_backward() : 0 1 5 6 3 0
被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C++ STL通过激烈的问题解决过程来训练和掌握这些概念。
评论前必须登录!
注册