zoukankan      html  css  js  c++  java
  • c++中用vector创建多维数组的初始化方法

    最近调试一个程序,在使用vector声明一个二维数组时出现错误。错误的方法如下所示:

    std::vector<std::vector<double> > sphereGrid;
    int gridLA = angleSpanLA / angelAccuracy;
    int gridLO = angleSpanLO / angelAccuracy;
    sphereGrid = std::vector<std::vector<double> >( gridLA , gridLO );

    会出现如下报错:

    /home/zn/VanishingPointDetection/src/VPDetection.cpp: In member function ‘void VPDetection::getSphereGrids(std::vector<std::vector<double> >&)’:
    /home/zn/VanishingPointDetection/src/VPDetection.cpp:156:66: error: no matching function for call to ‘std::vector<std::vector<double> >::vector(int&, int&)’
      sphereGrid = std::vector<std::vector<double> >( gridLA , gridLO );

    这就是因为二维数组的初始化出现了错误,一般的话要通过下面这种方式初始化

    定义空二维vector,再赋值
    vector<vector <int> > ivec(m ,vector<int>(n)); //m*n的二维vector,注意两个 "> "之间要有空格!

    所以我们要把程序改为

    std::vector<std::vector<double> > sphereGrid;
    int gridLA = angleSpanLA / angelAccuracy;
    int gridLO = angleSpanLO / angelAccuracy;
    sphereGrid = std::vector<std::vector<double> >( gridLA , std::vector<double>(gridLO)  );

    就可以解决错误,通过这次改错更加认识到了c++之vector的用法。

    参考:https://blog.csdn.net/ldkcumt/article/details/51396980

    https://blog.csdn.net/oNever_say_love/article/details/50763238

  • 相关阅读:
    git上刚下载的项目就显示有改动
    Windows Server 2012 R2安装Oracle 11g问题
    maven项目更换本地仓库
    dom4j创建和解析xml文档
    java倒计时三种简单实现方式
    JS倒计时两种种实现方式
    java加载properties文件的六中基本方式实现
    MYSQL 高级语法
    MYSQL 基础语法
    Sql 代码规范说明
  • 原文地址:https://www.cnblogs.com/feifanrensheng/p/8711601.html
Copyright © 2011-2022 走看看