zoukankan      html  css  js  c++  java
  • C++11 std::copy

    这个函数并不是简单的

    while(first != last)
    {
         *result = *first;
         result++;
         first++;   
    }

    事实上这种写法是最具普适性的,值要求inputIterator是输入迭代器,outputIterator是输出迭代器

    可以想像我们熟悉的链表,vector之类的迭代器都是满足要求的。但这种最具普适性的写法性能却不咋地。

    习惯C语言的应该都很喜欢memcpy这个函数,确实高效。在C++里,不是所有的对象拷贝都能简单的memcpy的,

    c++11给出了一个函数std::is_trivial_copyable用于判断某个类型是否能在拷贝的时候使用memcpy

    而copy就专门为这种类型的的对象做了特化

    还有就是在random_access_iterator的情形下,甚至可以直接拷贝整个容器

    C++11的语境下,又多了一个move_iterator,它是在一般iterator的包装一层得到的,主要用于逐个的移动一个容器

    也就是,一点一点的将容器中的元素移走。copy同样适用于这种语义,只要你给出的inputIterator是move_iterator就行了。

    这对于诸于std::vector<std::string>之类的容器很是有用

  • 相关阅读:
    git操作说明书
    python之routes入门
    python inspect库
    Python SMTP发送邮件
    Python深入:setuptools进阶
    Python打包之setuptools
    python graphviz的使用(画图工具)
    pathlib的使用
    python tempfile 创建临时目录
    python flake8 代码扫描
  • 原文地址:https://www.cnblogs.com/hustxujinkang/p/5030953.html
Copyright © 2011-2022 走看看