将一系列整数放入 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);
}
}
我们的任务是让一个 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风格),如果你愿意,可以使用
并尝试深入学习 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);
}
}