c++11之copy 和 copy_if 的用法
0.时刻提醒自己
Note: vector的释放
1.功能
复制 [first, last) 所定义的范围中的元素到始于 d_first 的另一范围.
区别: copy_if 带条件拷贝,而非全拷贝
2. 头文件与返回值
2.1 头文件
#include <numeric>
2.2 返回值
指向目标范围中最后复制元素的下个元素的输出迭代器
3. 异常
可能抛出异常
若算法无法分配内存,则抛出 std::bad_alloc 。
4.copy用法
4.1 代码
// 1. 构建一个原始数组
std::vector<int> src_vector(5);
// iota(起始,结束,从哪一个开始);
std::iota(src_vector.begin(), src_vector.end(), 10);
// 2. 将原始数组拷贝到目标数组
std::vector<int> dst_vector;
// 3. 执行拷贝
std::copy(src_vector.begin(), src_vector.end(), std::back_inserter(dst_vector));
// 4.遍历输出目标数组和原始数组
std::cout << "原始数组:\n";
std::for_each(src_vector.begin(), src_vector.end(), [](const int &item) {std::cout << "item = " << item << std::endl; });
std::cout << "目标数组:\n";
std::for_each(dst_vector.begin(), dst_vector.end(), [](const int &item) {std::cout << "item = " << item << std::endl; });
4.2 输出
5.copy_if用法
5.1 代码
// 1. 构建一个原始数组
std::vector<int> src_vector(5);
// iota(起始,结束,从哪一个开始);
std::iota(src_vector.begin(), src_vector.end(), 10);
// 2. 将原始数组拷贝到目标数组
std::vector<int> dst_vector(src_vector.size());
// 3. 将 src 拷贝到 dst,当时只拷贝大于13的元素。
auto it = std::copy_if(src_vector.begin(), src_vector.end(), dst_vector.begin(), [](const int item) {return item > 13; });
// 调整拷贝后的大小,为什么? 因为初始化时,指定了其大小
dst_vector.resize(std::distance(dst_vector.begin(), it));
// 4.遍历输出目标数组和原始数组
std::cout << "原始数组:\n";
std::for_each(src_vector.begin(), src_vector.end(), [](const int &item) {std::cout << "item = " << item << std::endl; });
std::cout << "目标数组:\n";
std::for_each(dst_vector.begin(), dst_vector.end(), [](const int &item) {std::cout << "item = " << item << std::endl; });
5.2 输出
c++11之copy 和 copy_if 的用法的更多相关文章
- 做个地道的c++程序猿:copy and swap惯用法
如果你对外语感兴趣,那肯定听过"idiom"这个词.牛津词典对于它的解释叫惯用语,再精简一些可以叫"成语".想要掌握一门语言,其中的"成语" ...
- Ext.Net学习笔记11:Ext.Net GridPanel的用法
Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...
- C++11之for循环的新用法《转》
相关资料:https://legacy.gitbook.com/book/changkun/cpp1x-tutorial/details C++11之for循环的新用法 C++使用如下方法遍历一个容器 ...
- C++11之for循环的新用法
C++使用如下方法遍历一个容器: #include "stdafx.h" #include<iostream> #include<vector> int m ...
- C++11 std::copy
这个函数并不是简单的 while(first != last) { *result = *first; result++; first++; } 事实上这种写法是最具普适性的,值要求inputIter ...
- datatable中的copy和clone的用法区分
dt.copy();//复制结构和数据 dt.clone();//仅复制结构,不复制数据
- C++11智能指针 share_ptr,unique_ptr,weak_ptr用法
0x01 智能指针简介 所谓智能指针(smart pointer)就是智能/自动化的管理指针所指向的动态资源的释放.它是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动 ...
- C/C++ C++ 11 std::function和std::bind用法
std::bind() std::bind 主要用于绑定生成目标函数,一般用于生成的回调函数,cocos的回退函数都是通过std::bind和std::function实现的.两个点要明白: 1.绑定 ...
- 11、for和range的用法
// 27_range的使用 package main import ( "fmt" ) func main() { str := "abc" //通过for打 ...
随机推荐
- 【基因组组装】HiC挂载软件以及如何用Juice_box手工纠错?
目录 1.常用HiC挂载软件 2. Juice_box手工纠错 1.常用HiC挂载软件 ALLHiC 张兴坦老师专为多倍体和高杂合度物种基因组挂载开发.如果是复杂基因组,肯定是首选.对于简单基因组,我 ...
- 【pheatmap热图scale报错】Error in hclust(d, method = method):NA/NaN/Inf in foreign function call (arg 11)
初始数据类似如下: 填充下缺失值 data[data==0] <- NA data[is.na(data)] <- min(data,na.rm = T)*0.01 pheatmap(lo ...
- SCRDet——对小物体和旋转物体更具鲁棒性的模型
引言 明确提出了三个航拍图像领域内面对的挑战: 小物体:航拍图像经常包含很多复杂场景下的小物体. 密集:如交通工具和轮船类,在航拍图像中会很密集.这个DOTA数据集的发明者也提到在交通工具和轮船类的检 ...
- CentOS7 安装配置RocketMQ --主从模式(master-slave)异步复制
机器信息 192.168.119.129 主 192.168.119.128 从 配置host[两台机器] vim /etc/hosts 添加 192.168.119.129 rocketmq-nam ...
- C逗号表达式
c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值.如:(3+5,6+8)称为逗号表达式,其求解过程先表达 ...
- redis 之 集群
#:下载源码包,并编译安装 [root@localhost src]# wget http://download.redis.io/releases/redis-4.0.14.tar.gz [root ...
- ganglia -api
setup 命令: virtualenv ve source ve/bin/activate pip install -r requirements.txt python ganglia/gangli ...
- 2.VUEJS-安装
Vue.js 安装 1.独立版本 我们可以在 Vue.js 的官网上直接下载 vue.min.js 并用 <script> 标签引入. 2.使用 CDN 方法 以下推荐国外比较稳定的两个 ...
- 开发中的PR和MR
GitLab的是Pull Request缩写.GitHub则是Merge Request也就是MR. 当项目下载后进行更改并提交,每次过程算一次PR,一般会加入管理员审核,通过才能合并到master主 ...
- 30个类手写Spring核心原理之自定义ORM(上)(6)
本文节选自<Spring 5核心原理> 1 实现思路概述 1.1 从ResultSet说起 说到ResultSet,有Java开发经验的"小伙伴"自然最熟悉不过了,不过 ...