预测:底层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. 编写webpack 插件

    Webpack插件为第三方开发者释放了Webpack的最大可能性.利用多级回调开发者可以把他们自己的需要的功能引入到Webpack里面来.Build插件比Build loader 更进一步.因为你需要 ...

  2. Daily Scrum (2015/10/31)

    这几天我们组的进度有点慢,剩下这一周的我们必须要加油认真对待. 周末这两天我们是这样安排的: 成员 今日任务 时间 明日任务 符美潇 数据库部分代码的编写 1h 每周小组例会 潘礼鹏 团队博客作业   ...

  3. Daily Scrumming* 2015.10.25(Day 6)

    一.总体情况总结 1.UI今日总结:初步设计了社团详情界面 2.后端今日总结:讨论并设计数据库,表内容,属性和相互联系等,并在rails的activeRecord和activeModel中实现,同时设 ...

  4. RocEDU.阅读.写作选择书目

    很高兴加入这样一个专门于读书.写作的群. 一.选择图书 通识类: <你的灯亮着吗> 作者: 高斯 (Donald C. Gause) / 温伯格 (Gerald M.Weinberg) 出 ...

  5. C# CHM帮助文档

    1.生成chm文件 首先,下载EasyCHM软件,此软件可将HTML文件.TXT文件.图片和文件夹按照文件层次生成.chm文件.EasyCHM打开界面如图所示: 点击“新建”,选择需要生成.chm文件 ...

  6. 08_Java基础语法_第8天(Eclipse)_讲义

    今日内容介绍 1.Eclipse开发工具 2.超市库存管理系统 01Eclipse的下载安装 * A: Eclipse的下载安装  * a: 下载 * http://www.eclipse.org ...

  7. Oculus VR眼镜调研

    VR眼镜 oculus 软件安装 最详细的Oculus Rift VR/3D眼镜安装设置教程(多图) 在线安装Oculus rift驱动[非VPN方法] Rift,Go,Gear VR,Quest: ...

  8. python基础(六)python操作excel

    一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...

  9. Windows 常用快捷方式

    gpedit.msc-----组策略sndrec32-----录音机nslookup----- ip地址侦测器explorer------ 打开资源管理器logoff-------注销命令tsshut ...

  10. [转帖学习]Howto Shrink a Thin Provisioned Virtual Disk (VMDK)

    Howto Shrink a Thin Provisioned Virtual Disk (VMDK) Posted by fgrehl on November 24, 2014Leave a com ...