C++ 请求'num'中的成员'push_back',该成员的类型为'int[((unsigned int)((int)n))]'

C++ 请求'num'中的成员'push_back',该成员的类型为'int[((unsigned int)((int)n))]',c++,C++,push_back通常在数组上调用,而不是像int[]这样的数组。您使用的是常规的C样式数组,而不是std::vector,编译器正在抱怨 num应声明为 #include <iostream> #include <vector> #include <numeric> using namespace std; std::vector<float> num; float mean (float num[], float n) { int i

push_back通常在数组上调用,而不是像int[]这样的数组。

您使用的是常规的C样式数组,而不是std::vector,编译器正在抱怨

num应声明为

#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' 

从错误消息中可以非常清楚地看到:num不是类的实例,因此不能对其调用方法。你为什么认为你可以打电话给push_?您认为push_-back是在哪里定义的?

num不是std::vector,因此您不能为它调用push_-back方法

也许您打算这样定义num:

std::vector<int> num;
请注意,当然,您必须相应地修改代码的其余部分

std::vector<int> num;
->


什么时候提问可以用代码代替?说点什么,伙计。

决定如何将数字存储在向量或数组中,然后使用相应的操作

似乎您对该问题进行了大量编辑,正如在开头标题中,当您尝试在num中执行向量操作时,编译器所抱怨的那样,因为该版本中的num是数组。然后,当前代码有一个相反的问题:num被定义为一个向量,并且您试图应用一个在向量中不可用的操作,而是应用于指针

第二个错误可以通过将对std::acculate的调用更改为使用迭代器来修复:

int i,j;
std::vector<int> num;

注意:编辑问题使现有答案不再有意义是一个非常糟糕的想法。您是StackOverflow新手,但如果您继续使用此模式,您的问题将被关闭。

在我看来,您似乎在试图推回一个数组!这不是个好主意。像这样的东西是无法编译的,请使用std::vector或类似的工具。很抱歉,您的代码非常混乱,而且由于您之前试图遵循善意的建议,情况变得更糟。我会扔掉这个代码。然后决定你想学什么,第一个大的选择是你是想学习数组还是std::vector,然后坚持到底。随机插入一些你不理解的代码,你将一事无成。慢慢开始,循序渐进。一般来说,你会得到很好的建议,但并不一定会欣赏你所处的位置。例如,早些时候,我们建议您使用std::acculate,您已经接受了这个建议。std::accumulate没有什么问题,但是如果您的目的是学习如何编写for循环,或者如何编写和调用自己的函数,那么使用它是不正确的。@John-更改问题中的代码以消除问题对我们来说真的不好!即使是新手也应该能够解释他们编写的代码。你可以说我在一些示例代码中看到了push_,但没有意识到我在哪里可以使用它有任何限制。
int i,j;
std::vector<int> num;
float mean = std::accumulate(num.begin(), num.end(), 0) / n;