将一系列整数放入 class 的最佳方法是什么?

What is the best way to get a series of integers into a class?

我们的任务是让一个 class 一次接受一个整数值。使用这些整数值,我应该做很多不同的事情。添加它们,取平均值,找到最大值和最小值等。我可以编写求平均值和最大值的函数等等,但这是我挣扎的开始。

如何让用户输入我的 class?我有一个成员函数和构造函数。 "next" 函数是我用来存储和提取我的数字的函数:

class Statistician{
    public:
        Statistician();

        void next (int r);
}

我试图在 "next" 函数中编写一个 for 循环,它将填充和排列以便将每个值放入 class 但这似乎是一种非常乏味的方法继续。我不确定接下来会发生什么。

我应该使用数组吗?如果是的话,我该如何编写循环以便一次将数字放入一个?还是有其他方法可以做到这一点? class 会自动填充吗? (这似乎不太可能)

假设它是你的伪代码 class:

class Statistician {
    Statistician();
    void next(int* a);
};

这是你主要的伪代码:

int main() {
    int arraySize = 10;
    int anArray[arraySize];
    for (int i=0; i < arraySize; ++i) {
        cin >> anArray[i];
    }
    Statistician obj;
    obj.next(anArray);
}

这里我使用的是内置数组(C风格),如果你愿意,可以使用 class.

并尝试深入学习 C++ 的每一件事,因为这真的很重要 ;)(我会推荐你​​ Deitel C++ 如何编程

"best" 方法比较固执己见。有些人认为 最好的 方法是使用硬编码数组(非常适合调试)。有些人更喜欢从文件中读取数字(一致,不需要大量输入)。其他人使用标准输入。还有其他方法,例如从设备读取。

通常要将数字输入 class,使用 input 方法。重载 operator>> 是一种常用技术。

这是一个例子:

struct Statistician
{
  std::vector<int> numbers;
  friend std::istream& operator>>(std::istream& input, Statistician& s);
};

std::istream& operator>>(std::istream& input, Statistician& s)
{
    int n;
    while (input >> n)
    {
        s.numbers.push_back(n);
    }
    return input;
}

您始终可以在另一个函数中输入数据,然后将数据传递给您的统计学家 class。

编辑 1:另一种方法
如果你对重载运算符过敏,你可以声明一个输入函数:

struct Statistician
{
  std::vector<int> numbers;
  void input_data(std::istream& input);
};

void Statistician::input_data(std::istream& input)
{
    int n;
    while (input >> n)
    {
        numbers.push_back(n);
    }
}