闲:测试memcpy和std::copy vector之间拷贝
预测:底层C函数肯定比stl算法快
结果:少量数据底层快,大数据以上则stl对vector的处理可能更好
C/C++:
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
#include <string>
template<typename T>
void Display(const T &rhs)
{
for (auto iter = rhs.begin(); iter != rhs.end();)
{
printf("%c\n", *iter++);
}
}
int main()
{
std::vector<char> vec1_;
char ch = 'a';
; i < ; i++)
{
vec1_.push_back(ch);
}
std::clock_t start, end;
start = std::clock();
std::vector<char> vec2_(vec1_.begin(), vec1_.end());
end = std::clock();
std::cout << "迭代器范围初始化: " << ((double)(end-start)/CLOCKS_PER_SEC) << std::endl;
// Display(vec2_);
start = std::clock();
std::vector<char> vec3_;
vec3_.resize(vec1_.size());
std::copy(vec1_.begin(), vec1_.end(), vec3_.begin());
end = std::clock();
std::cout << "std::copy: " << ((double)(end-start)/CLOCKS_PER_SEC) << std::endl;
// Display(vec3_);
start = std::clock();
std::vector<char> vec4_;
vec4_.resize(vec1_.size());
std::memcpy(&vec4_[], &vec1_[], vec1_.size());
end = std::clock();
std::cout << "memcpy: " << ((double)(end-start)/CLOCKS_PER_SEC) << std::endl;
//Display(vec4_);
;
}
注意点:memcpy 只能按字节拷贝,所以选择char进行,实际意义不明显...
闲:测试memcpy和std::copy vector之间拷贝的更多相关文章
- std::copy的使用
看到有人在用std::copy这个东西,很简洁和爽啊,,所以找些帖子学习学习 http://blog.sina.com.cn/s/blog_8655aeca0100t6qe.html https:// ...
- std::copy性能分析与memmove机器级实现
复制数据的快速方法std::copy C++复制数据各种方法大家都会,很多时候我们都会用到std::copy这个STL函数,这个效率确实很不错,比我们一个一个元素复制或者用迭代器复制都来的要快很多. ...
- std::copy 和 std::back_inserter
#define print_vector(v1) \ for(auto iter = v1.begin();iter != v1.end();iter++) \ cout<<*iter&l ...
- std::copy使用方法
推荐2个c++函数库,类定义的资料库: http://en.cppreference.com/w/cpp/algorithm/copy http://www.cplusplus.com/referen ...
- std::copy ( myvector.begin(), myvector.end(), out_it )
在实际生产环境中,不能进行调试,所以程序通常需要编译一个DEBUG版本来辅助我们找出问题所在,编译这样的DEBUG版本最常用的手段就是在关键处输出我们关心一些变量的值到屏幕. 如果输出的简单的变量值, ...
- COPY - 在表和文件之间拷贝数据
SYNOPSIS COPY tablename [ ( column [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] [ BINARY ] [ O ...
- (c++ std) 查找 vector 中的元素
You can use std::find from <algorithm>: std::find(vector.begin(), vector.end(), item) != vecto ...
- 两个linux之间拷贝文件及文件夹
Linux为我们提供了两个用于文件copy的命令.一个是cp,一个是scp,可是他们略有不同,cp 主要是用于在同一台电脑上,在不同的文件夹之间来回copy文件 scp 主要是在不同的Linux系统之 ...
- 使用pscp命令在Windows与linux之间拷贝文件
在Linux环境下做开发时,我们可能会在windows下远程控制Linux系统,本文介绍如何使用putty的pscp.exe在Windows和 Linux(本文使用fedora)之间copy文件. 工 ...
随机推荐
- pycharm连接服务器
python其他知识目录 1. pycharm当做xshell等远程工具,远程连接服务器步骤: 2.pycharm结合Linux服务器进行代码学习: 2.2使用pycharm远程在服务器上修改和执行代 ...
- jobs命令详解
基础命令学习目录首页 在用管理员执行一个命令后,用Ctrl+Z把命令转移到了后台.导致无法退出root的. 输入命令:exit终端显示:There are stopped jobs. 解决方法:方法一 ...
- centos下部署禅道流程
原文摘录:https://www.jianshu.com/p/71e9dab130a5 下面将我在Linux系统下搭建禅道服务的过程分享给大家. 第一步:下载禅道 Linux中可以用以下命令来下载安装 ...
- flex布局时,内容区域自适应高度
页面元素高度固定,中间的元素需要撑满屏幕,或者内容多时显示滚动条时,我们要把父元素设置为height:100vh <div class="parent"> <di ...
- oracle varchar2改成大字段类型clob,读取大字段内容
http://blog.csdn.net/cai7095576/article/details/23999549
- TeamWork#1,Week 5,Suggestions for Team Project
我们团队联系到了我们六班的直系学长,并向他咨询了软件工程基础这门课的团队项目相关的问题.他们团队的名字命名为Z-XML,团队中的几个学长也都是我平时所熟识的.虽然学长已经大四,忙着考研工作等各种事务, ...
- eg_8
问题描述:比较两数组是否相等 Demo_1: import java.util.Arrays; public class TestArray { public static void main(Str ...
- C++内存布局(1)-让new出的两个变量在堆上的地址连续
大家都知道栈的地址按照从高到低的顺序增长的, 而堆的地址是按照从底到高的顺序增长的. ); ); cout<<"n1,n2所指的地址:" << n1 < ...
- 在dell服务器上装windows server 2012详细解析
壹: 首先确定磁盘阵列的问题,在dell服务器开机后按住 Ctrl+R 或者 F2 会展开虚拟磁盘创建菜单 详细步骤可以查看:https://jingyan.baidu.com/article/915 ...
- BugScan插件编写高(gǎo)级(jī)教程
声明:本文最先发布在:http://q.bugscan.net/t/353 转载请注明出处 有问题可以和我交流 邮件(Medici.Yan@gmail.com) 个人博客地址:http://www.c ...