如何使用函数参数设置数组大小?

时间:2019-01-16 17:23:29

标签: c++ vector

我写了一些练习代码时遇到了问题。这与数组大小设置有关。我尝试了几种不同的方法,但是它们没有用。

这是我的代码:

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;
 }

我收到的错误是"variable length array used""variable length arrays are a C99 feature"。解决办法是什么?

1 个答案:

答案 0 :(得分:8)

如果没有具有允许variable length arrays的非标准扩展名的编译器,则无法使用函数参数设置数组的大小。根据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;
 }

float mean(vector<float> numbers){
     float toplam=0.0;
     for(float num: numbers){
         toplam+=num;
     }
     return toplam/numbers.size();
 }

float mean(vector<float> numbers){
     return std::accumulate(numbers.begin(), numbers.end(), 0.0f)/numbers.size();
 }

Documentation for std::accumulate

此外,如评论中所述,考虑将numbers作为常量引用(float mean(const vector<float> & numbers))传递,以消除不必要的复制而不会意外更改numbers