C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++ std::copy memcpy

C++ std::copy与memcpy区别小结

作者:魔法自动机

本文主要介绍了C++ std::copy与memcpy区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言:最近在读项目源码,发现有些地方用std::copy,有些地方用memcpy。但是并不知道为什么要这样,但是原作者也不认识,就只好自己研究一下了。

对比

相同:

不同:

使用场景

从两者的不同点就可以看的出来,大致使用场景的区别了。

适合std::copy:

适合memcpy:

总结以下,C++才加入的类型或者自行定义的类型、涉及深拷贝、源和目标内存区域有重叠的时候适合std::copy,其它时候用memcpy好点。

补充:平凡类型trivial和非平凡类型non-trivial。
这个主要是针对类中的四个函数来说的:构造函数、复制构造函数、赋值函数以及析构函数。
如果满足以下三点任意一点,就是非平凡类型non-trivial:

使用

std::copy

把src里面的内容复制到dst。

vector<int>src= { 0, 1, 2, 3, 4 };
vector<int>dst(5, 0);
std::copy(src.begin(), src.end(),dst.begin());// src起始地址,src末尾下一个,dst起始地址

memcpy

因为memcpy是C那边的,所以用vector不太合适,适合简单的数据类型。

const char src[50] = "http://www.runoob.com";
char dst[50];
// strlen(src)不包括结束符
memcpy(dst, src, strlen(src)+1);// dst起始地址,src起始地址,复制长度

到此这篇关于C++ std::copy与memcpy区别小结的文章就介绍到这了,更多相关C++ std::copy memcpy内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文