我经常发现自己想要复制具有恒定大小的数组的内容,我通常只写以下内容:
float a[4] = {0,1,2,3};
float b[4];
for(int i=0; i<4; i++){
b[i]=a[i];
}
最近,我正在编写一个用于教育目的的线性微积分库,我想知道是否有更好的方法来做到这一点。
我首先想到的是使用 memcpy:
memcpy(b, a, sizeof(float) * 4);
但这对我来说似乎很像 c 并且容易出错。我喜欢在编译时出现错误,对于具有非平凡复制构造函数的数据类型,或者如果我忘记与 sizeof(datatype) 相乘,这可能会变得很难看。
由于我正在编写一个我将大量使用的数学库,因此性能对我来说非常重要。今天的编译器是否足够聪明,能够理解第一个示例只是复制一块内存并将其优化为与第二个解决方案一样高效?
也许标准库中有一个可以帮助我的函数?c++11有什么新东西吗?还是我应该只创建一个宏或模板函数?