最近调试一个程序,在使用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::: 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

c++中用vector创建多维数组的初始化方法的更多相关文章

  1. c++用vector创建二维数组

    1 vector二维数组的创建和初始化 std::vector <int> vec(10,90); //将10个一维动态数组初始为90std::vector<std::vector& ...

  2. stl vector创建二维数组

    vector<vector<); for (auto it = v.begin(); it != v.end(); it++) { ; (*it).reserve();//预留空间为5,但 ...

  3. vector创建2维数组

    以前我要建立一个二维数组,总是使用 int N=5, M=6; vector<vector<int> > Matrix(N); for(int i =0; i< Matr ...

  4. C语言 动态创建二维数组

    /*C语言 如何动态创建二维数组 转化为一维数组申请数组,创建和释放都比较简单 */ #include <stdlib.h> #include <stdio.h> #inclu ...

  5. Python创建二维数组(关于list的一个小坑)

    0.目录 1.遇到的问题 2.创建二维数组的办法 3.1 直接创建法 3.2 列表生成式法 3.3 使用模块numpy创建 1.遇到的问题 今天写Python代码的时候遇到了一个大坑,差点就耽误我交作 ...

  6. c/c++ 图的创建(二维数组法)

    c/c++ 图的创建(二维数组法) 图的概念 图由点和线组成 知道了图中有多少个点,和哪些点之间有线,就可以把一张图描绘出来 点之间的线,分有方向和无方向 创建图 创建图,实际就是创建出节点,和节点之 ...

  7. C#中创建二维数组,使用[][]和[,]的区别

    C#中,我们在创建二维数组的时候,一般使用arr[][]的形式,例如 int[][] aInt = new int[2][]; 但声明二维数组还有一种方法,是使用arr[,]的形式.两者有什么区别呢? ...

  8. Java使用Array类创建多维数组

    1.创建一维数组 import java.lang.reflect.Array; public class ArrayTest { public static void main(String[] a ...

  9. thinkphp二维数组模板输出方法

    thinkphp二维数组模板输出方法 先写个记录,有空再整理发上来

随机推荐

  1. Springboot @webfilter @order filter过滤器

    我们使用@WebFilter注解的时候发现注解里面没有提供可以控制执行顺序的参数 @WebFilter 的属性 属性名 类型 描述 filterName String 指定过滤器的 name 属性,等 ...

  2. Maven------报错:Error resolving version for plugin

    配置Maven插件时报错:Error resolving version for plugin 'org.springframeboot.boot:spring-boot-maven-plugin' ...

  3. 5 -- Hibernate的基本用法 --4 3 JDBC连接属性

    Hibernate需要进行数据库访问,因此必须设置连接数据库的相关属性.所有Hibernate属性的名字和语义都在org.hibernate.cfg.Environment中定义. 关于JDBC连接配 ...

  4. JavaScript之 for...in

    for-in 可以用来枚举对象的属性,还有数组的索引,用法: 枚举对象属性 var o={name:'a',age:25,sex:'male'} for(var each in o){ console ...

  5. debug的一点总结

    程序员常常需要和bug打交道,一般来说调试bug的时间要多于编写程序的时间. bug可以简单的分为两大类: 语法上的bug 逻辑上的bug 语法上的bug就是指编译器能够识别的,例如常见的缺少分号和括 ...

  6. Git 学习笔记--1.Git基础操作

    取得项目的Git仓库 有两种方式取得Git项目仓库.第一种是在现存的目录下,通过导入所有文件来创建新的Git仓库.第二种是从已有的Git仓库克隆出一个新的镜像仓库. 在工作目录中初始化新仓库  要对现 ...

  7. 最简单的GLSL,Shader

    Vertex Shader void main() { gl_FrontColor = gl_Color; gl_Position = ftransform(); } Fragment Shader ...

  8. C++ template —— 模板与继承(八)

    16.1 命名模板参数许多模板技术往往让类模板拖着一长串类型参数:不过许多参数都设有合理的缺省值,如: template <typename policy1 = DefaultPolicy1, ...

  9. vue的首页渲染了两次的原因以及解决方法

    现在在用vue做一些单页面应用的东西,遇到了些许问题啊,比如我再渲染首页的时候,会渲染两次,查看了一下原因,原来是在写路由的时候写的格式错了: 这样的时候,初始的时候就是加载的exam_list页面, ...

  10. 《C++ Primer Plus》16.4 泛型编程 学习笔记

    STL是一种泛型编程(generic programming).面向对象编程关注的是编成的数据方面,而泛型编程关注的是算法.它们之间的共同点是抽象和创建可重用代码,单他们的理念决然不同.泛型编程旨在编 ...