请求在"num"中请求成员"push_back",其非类类型为"int[((unsigned int)((int)n))]"
request for member `push_back' in `num', which is of non-class type `int[((unsigned int)((int)n))]'
#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'
push_back
通常在vector
上调用,而不是像int[]
那样的数组。
您使用的是常规C样式数组,而不是std::vector
,编译器正在抱怨。
num
应声明为
std::vector<int> num;
从错误消息中可以清楚地看到:num
不是类的实例,因此您不能在它上调用方法。为什么您认为可以在它上面调用push_back
?你认为push_back
在哪里定义?
num
不是std::vector
,因此不能为其调用push_back
方法。
也许你打算这样定义num
:
std::vector<int> num;
请注意,您当然必须相应地修改代码的其余部分。
int i,j, num[n];
-->
int i,j;
std::vector<int> num;
从什么时候开始提问可以被代码取代?说点什么吧,伙计。
决定如何将数字存储在矢量或数组中,然后使用相应的可用操作。
似乎您对这个问题进行了大量编辑,因为在开头的标题中,当您试图对num
中的向量执行运算时,编译器会抱怨,因为该版本中的num
是一个数组。那么当前的代码有相反的问题:num
被定义为一个向量,并且您试图应用一个在向量中不可用的操作,而是应用于指针。
第二个错误可以通过将调用更改为std::accumulate
以使用迭代器来修复:
float mean = std::accumulate(num.begin(), num.end(), 0) / n;
注意:编辑问题以使现有答案不再有意义是一个非常糟糕的主意。您是StackOverflow的新手,但如果继续使用此模式,您的问题将被解决。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 是否可以从int转换为enum类类型
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何在使用 cin 请求 int 时有效地使用户输入万无一失?
- 错误:请求"数据"中的成员"大小",其非类类型为"int [5]"
- 请求在"伺服控制器"中请求成员"附加",该成员属于非类类型"int"
- 检查 int 的输入,如果是字符,请再次请求输入(Turbo C++)
- 如何修复错误:请求从"void"转换为非标量类型"std::vector<int>"
- C++ - 映射 - 错误:请求"w"中的成员'first',该成员属于非类类型 'const int'
- 错误:请求"cur"中的成员"成员",该成员属于非类类型节点<int>* 二叉树
- 错误:请求非类类型的 int* 的成员'insert'?怎么了?
- 错误:函数"int main()"中请求从 'double' 型转换为非标量类型'Player';
- 请求在"num"中请求成员"push_back",其非类类型为"int[((unsigned int)((int)n))]"