用C++ STL复制的不同方法std::copy()、copy_n()、copy_if()、copy_backward()
本文概述
- CPP
- CPP
1.copy(strt_iter1, end_iter1, strt_iter2):通用复制函数,用于将一段元素从一个容器复制到另一个容器。它有3个参数:
- strt_iter1:指向源容器起点的指针, 必须从此处开始复制元素。
- end_iter1:指向源容器末尾的指针, 直到必须复制元素的位置。
- strt_iter2:指向目标容器开始的指针, 指向必须开始复制元素的位置。
- strt_iter1:指向源容器起点的指针, 必须从此处开始复制元素。
- 编号:整数, 指定从strt_iter1开始将多少个数字复制到目标容器。如果输入负数, 则不执行任何操作。
- strt_iter2:指向目标容器开始的指针, 指向必须开始复制元素的位置。
//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通过激烈的问题解决过程来训练和掌握这些概念。
推荐阅读
- 矩阵的不同运算快速介绍
- #yyds干货盘点#JS是单线程的,那么JS是如何实现并发请求的()
- Centos7安装JDK和Tomcat详细步骤
- Flutter 专题61 图解基本 Button 按钮小结#yyds干货盘点#
- Centos 7使用MyCat搭建 MySQL-读写分离
- Linux中卸载提示设备正忙怎么办?
- 「2022」打算跳槽涨薪,必问面试题及答案 -- ECMAScript 篇#yyds干货盘点#
- SpringBoot+Uniapp实战开发全新仿抖音短视频App
- 记一次文件编码格式导致命令执行不成功的错误--服务 tomcat 不支持 chkconfig