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打 ...
随机推荐
- Excel-姓名列中同一个人汇总金额列,得出总金额
8.姓名列中同一个人求和金额列,得出总金额. 方法一: P2处公式=SUMPRODUCT(($M$2:$M$20=$M2)*($N$2:$N$20)) 解释函数: 引用:https://zhinan. ...
- Python获取随机数
Python当中,可用random模块来获取随机数 import random """ random模块,用于获取随机数 """ print ...
- Identity Server 4 从入门到落地(三)—— 创建Web客户端
书接上回,我们已经搭建好了基于Identity Server 4的认证服务和管理应用(如果还没有搭建,参看本系列前两部分,相关代码可以从github下载:https://github.com/zhen ...
- 01 eclipse搭建maven的web工程(3.1)
eclipse搭建maven的web工程(3.1) 一.下载并在eclipse安装JDK环境[查看] 二.下载并在eclipse安装maven环境[查看] 三.新建maven-webapp工程: 1. ...
- 年底巩固下 CS 知识「GitHub 热点速览 v.21.49」
作者:HelloGitHub-小鱼干 期末到了!是时候来一波 CS 复习资料了,从本科基础知识开始到实用编程技术.本周 GitHub 热点趋势榜给你提供了最全的复习资料:清华的 CS 四年学习资料.W ...
- 【.Net】使用委托实现被引用的项目向上级项目的消息传递事件
前言:在实际项目过程中,经常可能遇到被引用的项目要向上传递消息,但是又不能通过方法进行返回等操作,这个时候委托就派上用场了.以下使用委托,来实现被引用的项目向上传递消息的小教程,欢迎各位大佬提供建议. ...
- idea Error : java 不支持发行版本5
问题描述 在Intellij idea中新建了一个Maven项目,运行时报错如下:Error : java 不支持发行版本5 解决 1.在Intellij中点击"File" --& ...
- An internal error occurred during: “Updating Maven Project”. Unsupported IClasspathEntry kind=4解决办法
An internal error occurred during: "Updating Maven Project". Unsupported IClasspathEntry k ...
- error信息
/opt/hadoop/src/contrib/eclipse-plugin/build.xml:61: warning: 'includeantruntime' was not set, defau ...
- window 查看端口占用情况
查看哪个进程在用 netstat -aon|findstr "8080" TCP 0.0.0.0:8080 0.0.0.0:0 ...

