是否可以在方法内部更改参数?

int NumSet::max()
{
    int i, temp=1;
    for (i=0;i<5;i++)
    {
        if (_num[i]>temp) temp=_num[i];
    }
    return temp;
}


我想对数组_num和说_num2使用相同的方法。
谢谢!

最佳答案

作为替代方案,请考虑使用std::max_element()代替,这是一种用于查找序列中最大元素的标准库算法。通常,通过使用标准库功能来避免代码重复是一个好主意,因为滚动自己的算法提供了引入错误的绝好机会,并且使用标准库可使您的代码更具表现力且更易于阅读(并因此易于维护)。

如果_num_num2是数组(int[]),则可以执行以下操作:

// Consider replacing the magic number 5 with a symbolic constant or variable.
int result = *(std::max_element(_num, _num + 5));


如果它们是某种STL容器(例如std::vector<int>),则:

int result = *(std::max_element(_num.begin(), _num.end()));


如果您确实想自己动手,那么您要做的就是传递某种引用或指向数组的指针,具体取决于数组的类型。假设这些成员变量是向量(std::vector<int>)。一种这样的实现可以是:

int NumSet::max(std::vector<int> const & sequence)
{
    int i, temp=1;
    for (i=0;i<5;i++)
    {
        if (sequence[i]>temp) temp=sequence[i];
    }
    return temp;
}


(这假定该向量至少包含五个元素。我不建议使用此代码,因为它容易超出边界条件。)

10-05 21:11
查看更多