专业财税服务推荐

精选优质财税服务,为企业提供专业、可靠的财税解决方案,助力企业健康发展

零报税代理记账
零申报代理记账
报税做账算帐财务报表老会计做账
代理记账
咨询微信:lhy_happyday
工商营业执照年度年报年检公示
全国个体、企业、公司、合作社工商年审年报服务!
个体/10元/次 企业/20元/次
咨询微信:lhy_happyday
财税咨询服务
一对一专业财税咨询,解决企业财税难题,提供定制方案
咨询微信:lhy_happyday
财务分析服务
小规模个体报税0申报税务年报工商年报月报季报报税代理记账
咨询微信:lhy_happyday
立即咨询专业财税顾问
微信号: lhy_happyday
会计从业9年,管理多家个体工商、小规模、一般纳税人等企业的财务、税务等相关工作!。
扫码或搜索添加微信,备注"财税咨询"获取专属优惠
知方号 知方号

C++由变量定义的数组如何初始化?(以整型、布尔数组为例) 数组长度size怎么定义出来

C++由变量定义的数组如何初始化?(以整型、布尔数组为例)

文章目录 背景:问题描述原因一分析:原因一解决方案:原因二解决方案:原因三解决方案:

背景:

今天作者在用到布尔数组时,想让其初始化的时候里面的值全为true(其实不用那么较真),而由此引发了一系列的问题。(建议还是转换到用vector好很多)因此写文记录一下,希望能帮助到许多入门的小伙伴。如果觉得有帮助就点个赞吧,写了那么多文章一个赞都没有,哭了///

问题描述

其实一共引发了三个问题:

1、定义的数组长度不可为变量(报错:表达式必须含有常量值) 2、由变量定义的动态数组如何直接全体初始化? 3、能不能使用c++的优势达到想要的结果(int bool数组用vector、char数组用string)

原因一分析:

让我们先分析第一个原因: 1、也许有人发现了,为何下面的代码力扣上就可以由变量定义数组长度,而自己的VS上就不行

void setZeroes(vector& matrix) { int row = matrix.size(); int column = matrix[0].size(); bool flag_r[row]; bool flag_c[column];

这其实是因为因为DEV-C++使用的编译器是GCC,它允许使用变量作为数组的长度定义数组。而VC的编译器不是GCC,它不允许这样做。

原因一解决方案:

但是有时我们需要根据输入定义数组的大小。因此,这里就需要用到c++的动态分配了。其实就是使用new关键字,定义步骤如下:

void init_arr(vector& matrix){ int row = matrix.size(); int* array = new int[row];

但是用完之后,一定要记得释放!!

delete[] array; array = NULL; 原因二解决方案:

其实一共有两个解决方法,一个是直接暴力for,第二个是fill函数。此处只介绍fill函数的方法。 如下例中输入函数的矩阵是一个shape为10*10:

void init_arr(vector& matrix){ int row = matrix.size(); int column = matrix[0].size(); int* array = new int[row]; fill(array, array+row, 8);//此处的输出为10个8 delete[] array; array = NULL;} 原因三解决方案:

常量定义的数组很常规也很简单,此处不做过多阐述。而作者更像说明的是,我们能不能别搞那么复杂,更简单地解决问题。

其实布尔数组就是01数组,这个甚至可以用整型数组来代替。因此,数组用vector代替,字符组用string代替。下面可以直接做一个全是true的row长度的数组。(这里代码给全,大家可以自己去test)

#include #include using namespace std;void init_arr(vector& matrix){ int row = matrix.size(); int column = matrix[0].size(); vector arr; arr.resize(row, 1); for (auto it = arr.begin(); it != arr.end(); it++) cout

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。