图1
说明:当我们需要二维数组作为引用参数时,这时就可以用到双指针;因为使用双指针容易出现问题,所以最好用指针数组来代替(单指针);
如图1所示,双指针保存信息是“多个目标,且每个目标包含6个参数”;用指针数组地址传参。
接下来进入 API_detect_Path() 函数,看下内部赋值操作,如图2:
图2
- vecDstboxs是个vector双层矢量集合,临时保存需要导入dstBoxs中的信息。
std::vector<std::vector<int> > vecDstboxs; // 保存有效的目标对象id、置信度值、位置信息 集合
- 第1步,创建临时的一维指针数组tempDstBoxs,大小为boxNum * g_boxNumTh 。boxNum是目标的个数,g_boxNumTh是每个目标的参数个数(这里是6);
- 第2步,把vecDstboxs中的所有数据导入到一维指针数组tempDstBoxs中;
- 第3步,对dstBoxs分配内存,并把一维指针数组tempDstBoxs拷贝给dstBoxs。(注意:这里的dstBoxs在这个函数中是双指针变量,所以分配内存时用的 *dstBoxs);
- 第4步,删除创建的临时一维指针数组tempDstBoxs,释放内存;
- 这样就对图1中的一维指针数组dstBoxs赋值了,具体读取方式见图1。