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

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日

悬赏问题

  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测