预测:底层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之间拷贝的更多相关文章

  1. std::copy的使用

    看到有人在用std::copy这个东西,很简洁和爽啊,,所以找些帖子学习学习 http://blog.sina.com.cn/s/blog_8655aeca0100t6qe.html https:// ...

  2. std::copy性能分析与memmove机器级实现

    复制数据的快速方法std::copy C++复制数据各种方法大家都会,很多时候我们都会用到std::copy这个STL函数,这个效率确实很不错,比我们一个一个元素复制或者用迭代器复制都来的要快很多. ...

  3. std::copy 和 std::back_inserter

    #define print_vector(v1) \ for(auto iter = v1.begin();iter != v1.end();iter++) \ cout<<*iter&l ...

  4. std::copy使用方法

    推荐2个c++函数库,类定义的资料库: http://en.cppreference.com/w/cpp/algorithm/copy http://www.cplusplus.com/referen ...

  5. std::copy ( myvector.begin(), myvector.end(), out_it )

    在实际生产环境中,不能进行调试,所以程序通常需要编译一个DEBUG版本来辅助我们找出问题所在,编译这样的DEBUG版本最常用的手段就是在关键处输出我们关心一些变量的值到屏幕. 如果输出的简单的变量值, ...

  6. COPY - 在表和文件之间拷贝数据

    SYNOPSIS COPY tablename [ ( column [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] [ BINARY ] [ O ...

  7. (c++ std) 查找 vector 中的元素

    You can use std::find from <algorithm>: std::find(vector.begin(), vector.end(), item) != vecto ...

  8. 两个linux之间拷贝文件及文件夹

    Linux为我们提供了两个用于文件copy的命令.一个是cp,一个是scp,可是他们略有不同,cp 主要是用于在同一台电脑上,在不同的文件夹之间来回copy文件 scp 主要是在不同的Linux系统之 ...

  9. 使用pscp命令在Windows与linux之间拷贝文件

    在Linux环境下做开发时,我们可能会在windows下远程控制Linux系统,本文介绍如何使用putty的pscp.exe在Windows和 Linux(本文使用fedora)之间copy文件. 工 ...

随机推荐

  1. Ruby知识点一:方法

    1.实例方法 接收者是对象本身的方法 2.类方法 接收者是类本身的方法,调用类方法时,可以使用::或者.两个符号. 类名.方法名 类名::方法名 3.函数式方法 没有接收者(接收者省略而已)的方法 4 ...

  2. 笔试题——C++开发简单记录错误模块

    题目:链接:https://www.nowcoder.com/questionTerminal/67df1d7889cf4c529576383c2e647c48 来源:牛客网 解析及代码来源:http ...

  3. ipcs命令详解

    基础命令学习目录首页 多进程间通信常用的技术手段包括共享内存.消息队列.信号量等等,Linux系统下自带的ipcs命令是一个极好的工具,可以帮助我们查看当前系统下以上三项的使用情况,从而利于定位多进程 ...

  4. yarn资源memory与core计算配置

    yarn调度分配主要是针对Memory与CPU进行管理分配,并将其组合抽象成container来管理计算使用 memory配置 计算每台机子最多可以拥有多少个container:  container ...

  5. iOS中使用RNCryptor对资源文件加密(先加密后拖进项目中)

    概述:IPA 在发布时,业务相关的敏感资源文件以明文的形式存储,由于没有加密保护,这些文件在应用发布后 可能被其他人获取,并结合其他漏洞和手段产生真实攻击.所以我们要 1.在设计.开发阶段,集合业务确 ...

  6. 【CSAPP笔记】14. 异常控制流和进程

    从给处理器加电,到断电为止,处理器做的工作其实就是不断地读取并执行一条条指令.这些指令的序列就叫做 CPU 的控制流(control flow).最简单的控制流是"平滑的",也就是 ...

  7. Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序

    由于最近比较忙,一直到假期才有空,因此将自己学到的知识进行分享.如果有不对的地方,请指出,谢谢!目前深度学习越来越火,学习.使用tensorflow的相关工作者也越来越多.最近在研究tensorflo ...

  8. poi读取Excel文件和图片

    首先得说一下,Excel文件是有03版和07版的区别的,也就是.xls和.xlsx,这两个文件需要分开读取. 其它的废话就不说了,直接贴代码: package util; import java.io ...

  9. 软工网络15团队作业8——Beta阶段敏捷冲刺(用户使用调查报告)

    一.项目概述 1.项目名称 考研必背 2.项目简介 微信小程序,帮助考研学生记忆单词. 3.项目预期达到目标 用户无需下载app,仅通过微信小程序就可以达到背单词的目的,并且能够制定背单词的计划. 4 ...

  10. 在Delphi中获得唯一32位长字符串

    function GetGUID: string; var   vGUID: TGUID;   vTemp:string; begin   if S_OK = CreateGuid(vGUID) th ...