前言:最原始的发行版本代码比较简洁,我们从2017年ncnn第一次开源的版本阅读mat的源码。阅读源码味如嚼蜡,下面就开始吧!
目录
构造函数
ncnn提供了8种构造函数的方式。
// empty
Mat();
// vec
Mat(int w);
// image
Mat(int w, int h);
// dim
Mat(int w, int h, int c);
// copy
Mat(const Mat& m);
// external vec
Mat(int w, float* data);
// external image
Mat(int w, int h, float* data);
// external dim
Mat(int w, int h, int c, float* data);
其中包含了一维的vector,二维的image,三维数据,拷贝构造函数。
拷贝构造函数具体的写法如下:
inline Mat::Mat(const Mat& m)
: dims(m.dims), data(m.data), refcount(m.refcount)
{
if (refcount)
NCNN_XADD(refcount, 1);
w = m.w;
h = m.h;
c = m.c;
cstep = m.cstep;
}
其中refco