#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
std::vector<float> num;
float mean (float num[], float n)
{
int i;
float sum=0;
for(i=0;i<n;i++)
sum=sum+num[i];
return (sum/n);
}
int main()
{
int minusElements;
int n;
cout << "Enter number of Elements:";
cin >> n;
minusElements = n - 1 ;
int i,j;
float temp;
float f;
for(i=0;i<n;i++)
{
cin >> f;
num.push_back(f);
}
cout << "Enter " << n << " numbers:\n";
for(i=0;i<n;i++)
cin >> num[i];
cin.get();
float m = mean(&num[0], num.size());
//if num is float[n] or float* (num of elements = n)
float mean = std::accumulate(num, num + n, 0) / n;
cout<<mean;
}
//46 no match for 'operator+' in 'num + n'
答案 0 :(得分:3)
push_back
通常在vector
上调用,而不是像int[]
这样的数组。
答案 1 :(得分:1)
您正在使用常规的C风格数组而不是std::vector
,并且编译器正在抱怨。
num
应声明为
std::vector<int> num;
答案 2 :(得分:0)
从错误消息中可以清楚地看出:num
不是类的实例,因此您无法在其上调用方法。为什么你认为你可以打电话给push_back
?您认为push_back
的定义在哪里?
答案 3 :(得分:0)
num
不是std::vector
,因此您无法为其调用push_back
方法。
也许您打算像这样定义num
:
std::vector<int> num;
请注意,您当然必须相应地修改其余代码。
答案 4 :(得分:0)
int i,j, num[n];
- &GT;
int i,j;
std::vector<int> num;
因为提问时可以用代码替换?说些什么伙伴。
答案 5 :(得分:0)
决定如何以矢量或数组存储数字,然后使用相应的操作。
您似乎编辑了很多问题,因为当您尝试在num
中执行向量操作时,编译器正在抱怨,因为num
该版本是一个数组。然后当前代码有相反的问题:num
被定义为一个向量,你试图应用一个在向量中不可用的操作,而是应用于指针。
可以通过将调用更改为std::accumulate
来使用迭代器来修复第二个错误:
float mean = std::accumulate(num.begin(), num.end(), 0) / n;
注意:编辑问题以使现有答案不再有意义是一个非常糟糕的主意。您是StackOverflow的新手,但如果继续使用此模式,则希望关闭您的问题。