qq_42149282 2021-10-25 16:03 采纳率: 100%
浏览 58
已结题

C++代码重构遇到的问题,不太清楚要求

这部分代码重构的要求是这样的
1、输入不用std::vector,而是用指针的形式,例如要修改

std::vector<float>  XXXXXXXXX(const std::vector<float>& vPoints, int vBatchSize, int vNumPoint, float vThres);

2、整个计算过程中不使用CPoint这个类,输入数据用指针的形式来保存,例如要修改

CPoint m_Center{ 0, 0, 0 };

void  __findXXXXX(std::vector<int>& voMaxVertexIndex, std::vector<int>& voMinVertexIndex, const std::vector<CPoint>& vVertexSet)

想请问各位这俩个需求是什么意思……怎么实现吗?是都换成指针,数组的方式?
谢谢

  • 写回答

1条回答 默认 最新

  • 关注
    std::vector<float> 可以用一个 float* 的变量代替
    CPoint 可以使用一个二级指针代替
    举例入下:
    
    std::vector<float> v;可以替换为:
    float *vp = new float[v.size()];
    然后把v中的元素放在vp这个指针里就可以了。
    for(int i = 0;i<v.size();i++)
        vp[i] = v.at(i);
    
    CPoint看你图片中输入了3个参数(CPoint m_Center{ 0, 0, 0 }),那么就可以用一个数组代替,
    std::vector<CPoint> vv;可以替换为(假设CPoint的三个参数是int类型):
    
    int** vvp = new int*[vv.size()];
    for(int i=0;i<vv.size();i++)
    {
        vvp[i] = new int[3]; //CPoint的三个参数
        vvp[i][0] = vv.at(i).x; //CPoint的第一个参数
        vvp[i][1] = vv.at(i).y; //CPoint的第一个参数
        vvp[i][2] = vv.at(i).z; //CPoint的第一个参数
    }
    
    如有帮助,请帮忙采纳一下,谢谢。
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月2日
  • 已采纳回答 10月25日
  • 创建了问题 10月25日

悬赏问题

  • ¥500 高有偿提问!求优化设计微信小程序
  • ¥15 matlab在安装时报错 无法找到入口 无法定位程序输入点
  • ¥15 收益高的广告联盟有哪些
  • ¥15 Android Studio webview 的使用问题, 播放器横屏全屏
  • ¥15 删掉jdk后重新下载,Java web所需要的eclipse无法使用
  • ¥15 uniapp正式环境中通过webapi将本地数据推送到设备出现的跨域问题
  • ¥15 xui建立节点,显示错误
  • ¥15 关于#单片机#的问题:开始、复位、十进制的功能可以实现,但是切换八进制的功能无法实现(按下按键也没有效果),把初始状态调成八进制,也是八进制可以实现但是切换到十进制不行(相关搜索:汇编语言|计数器)
  • ¥15 VINS-Mono或Fusion中feature_manager中estimated_depth是特征的深度还是逆深度?
  • ¥15 谷歌浏览器如何备份抖音网页数据