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

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

本文关键字:最佳 方法 是什么 一系列 整数      更新时间:2023-10-16

我们的任务是有一个类,一次接收一个整数值。有了这些整数值,我应该做很多不同的事情。将它们相加,取平均值,找到最大值和最小值等。我可以编写平均值和最大值的函数等等,但这是我正在努力的开始。

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

class Statistician{
public:
Statistician();
void next (int r);
}

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

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

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

通常,要将数字放入类中,请使用输入法。 重载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;
}

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

编辑 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);
}
}

假设它是类的伪代码:

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

这是你主要的Psudo代码:

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

这里我使用的是内置数组(C样式(,如果需要,可以使用<数组>类。

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