当我为练习编写一些代码时遇到了问题.这是关于数组大小设置.我尝试了几种不同的方法,但它们没有用.
这是我的代码:
float mean(vector<float> numbers){
int size = numbers.size();
float dizi[size];
float ort,toplam = 0.0;
for(unsigned int i=0; i<numbers.size(); i++){
dizi[i] = numbers[i];
toplam += dizi[i];
}
ort = toplam / numbers.size();
return ort;
}
Run Code Online (Sandbox Code Playgroud)
我收到的错误是"variable length array used"
和"variable length arrays are a C99 feature"
.解决办法是什么?
如果没有具有允许可变长度数组的非标准扩展的编译器,则无法使用函数参数设置数组的大小.根据C++标准,数组长度必须是编译程序时已知的常量.考虑使用另一个std::vector
.
这里似乎不需要阵列.我可以建议更多的东西,
float mean(vector<float> numbers){
int size=numbers.size();
float ort,toplam=0.0;
for(unsigned int i=0;i<numbers.size();i++){
toplam+=numbers[i];
}
ort=toplam/numbers.size();
return ort;
}
Run Code Online (Sandbox Code Playgroud)
要么
float mean(vector<float> numbers){
float toplam=0.0;
for(float num: numbers){
toplam+=num;
}
return toplam/numbers.size();
}
Run Code Online (Sandbox Code Playgroud)
要么
float mean(vector<float> numbers){
return std::accumulate(numbers.begin(), numbers.end(), 0.0f)/numbers.size();
}
Run Code Online (Sandbox Code Playgroud)
?
另外,如评论中所述,考虑传入numbers
作为常量引用(float mean(const vector<float> & numbers)
)以消除不必要的复制而不会有意外更改的风险numbers
.
归档时间: |
|
查看次数: |
81 次 |
最近记录: |