将数组元素加1

时间:2018-09-19 08:35:41

标签: c++ arrays

(我是编码新手) 我正在尝试将数组元素自身替换为1,但似乎无法正常工作。在下面,我尝试替换第三个元素:

int l=5;
int histogram[l];
histogram[l]={0};
histogram[2] = histogram[2] + 1;

它给我以下错误;

  

预期“;”表达后

直方图

2 个答案:

答案 0 :(得分:1)

首先,@ Elias已将数组histogram的大小定义为5,并将histogram [5]初始化为0。但是任何数组的最后一个索引是size-1...(size minus one),因为数组索引从零开始而不是一开始。

其次,您需要先将整个histogram[]数组从histogram[0]初始化为histogram[4],然后才能进行任何算术运算(如加或减)。在您的代码片段中,您甚至在将histogram[2]初始化为任何值之前都尝试将其递增1。

所以试试这个...

int len = 5, i = 0;
int histogram[len];
for(i = 0; i < len; i++) {
    histogram[i] = 0;
}
histogram[2] = histogram[2] + 1; //can also use  histogram[2] += 1; or histogram[2]++;

答案 1 :(得分:0)

int histogram[l];不是C ++,而是gcc扩展名。

histogram[l]={0};是未定义的行为,您正在访问数组末尾的内容。无法分配 C样式数组的所有元素。您似乎对 initialise histogram语法感到困惑,该语法仅适用于声明。

现代C ++避开了C样式的数组。如果您想要一个恒定的大小,请使用

std::array<int, 5> histogram = {};

或者如果您想要基于运行时变量的大小,请使用

std::vector<int> histogram(l, 0);