【发布时间】:2017-12-02 21:25:14
【问题描述】:
假设我有一个名为particle的类:
class particle {
public:
void set_values(double x, double y) {
x_val = x;
y_val = y;
}
double X() { return x_val; }
double Y() { return y_val; }
private:
x_val, y_val;
};
现在假设我有一个类型粒子数组,里面有 3 个对象粒子:
int main(){
particle p1;
particle p2;
particle p3;
p1.set_values(3,1);
p2.set_values(2,4);
p3.set_values(1,5);
part array_part[3] = {p1, p2, p3};
return 0;
}
现在我的问题是: 如何在类中创建一个函数,该函数采用 array_part 并返回它的 X() 或 Y() 值的最大值或最小值? 当然,我可以在课堂外通过用例如填充一个新数组来做到这一点。所有 X() 值并使用 c++ 函数 min_element。对于最小值,此代码如下所示:
double array_x[3] = {p1.X(), p2.X(), p3.X()};
double X_min = *min_element(array_x, array_x
+ sizeof(array_x)/sizeof(*array_x));
X_min 现在将 = 1。 但是如何在课堂内而不用写太多的主要内容呢?我真的不知道如何开始。
【问题讨论】:
-
将 std::minmax_element 与 lambdas 一起使用
-
您的类不包含数组,因此您不能使用
this指针 - 您可以编写一个static辅助函数,该函数将数组作为参数并找到最小值。此外,您应该更喜欢std::vector或std::array而不是原始数组 -
main函数中的part是什么?return语句之前的行。我认为应该是particle。