一、vector赋值新技能
方法1:pushback
vector<int> a;
a.pushback(10);
方法2:直接赋值(很少用)
vector<int> a = {1,2 ,3,4,5};
二、函数返回动态数组
void func(vector<int>src, double *dtemp)
{for (int i = 0; i < src.size(); i++){dtemp[i] = src[i];}qDebug()<<"size1" << sizeof(dtemp) / sizeof(dtemp[0]);//此法不对,得到的数组长度为1qDebug()<<"size2" << _msize(dtemp) / sizeof(dtemp[0]);//此法对,得到的数组长度为3int aa[4] = {1,2,3,4};//qDebug()<<"size a1: " << _msize(aa) / sizeof(aa[0]) ;//报错, _msize是个函数,返回malloc 或 new 出来的空间大小,静态数组不能用呢qDebug()<< " a2: "<<sizeof(aa) / sizeof(aa[0]);//此法对,得到的数组长度为3
}void on_curvereset_pushButton_clicked()
{//uimgr_ns::resetCurveplot();vector<int>src;src.push_back(1);src.push_back(2);src.push_back(3);double *dtemp = new double [src.size()];func(src, dtemp);qDebug()<<"dyn--"<<dtemp[0];delete[] dtemp;dtemp = nullptr;
}
三、计算数组的大小
对于动态数组用`_msize(dtemp) / sizeof(dtemp[0])` 才能得到正确的数组长度。
qDebug()<<"size1" << sizeof(dtemp) / sizeof(dtemp[0]);//此法不对,得到的数组长度为1
qDebug()<<"size2" << _msize(dtemp) / sizeof(dtemp[0]);//此法对,得到的数组长度为3
注意: _msize是个函数,返回malloc 或 new 出来的空间大小,静态数组aa不能用呢。
注意: int aa[4] = {1,2,3,4};// 这样的不能用_msize来计算数组大小。
静态数组 int aa[4] = {1,2,3,4}; 用 sizeof(aa) / sizeof(aa[0]) 计算数组大小
动态数组 double *dtemp; 用 _msize(dtemp) / sizeof(dtemp[0]) 计算数组大小