是否可以更改方法内的参数?
int NumSet::max()
{
int i, temp=1;
for (i=0;i<5;i++)
{
if (_num[i]>temp) temp=_num[i];
}
return temp;
}
我想使用相同的方法,对于数组_num和让我们说_num2。 谢谢!
答案 0 :(得分:2)
作为替代方案,请考虑使用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;
}
(这假设向量至少有五个元素。我不建议使用这个代码,因为它容易受到越界条件的影响。)
答案 1 :(得分:0)
是的,可以对不同的数组使用相同的方法。您需要将数组作为参数传递给您的方法:
int NumSet::max(int* num, size_t n)
{
if(n == 0) // if array is empty
return 0; // or something different
int i, temp= num[0];
for (i=1;i<n;i++)
{
if (num[i]>temp) temp = num[i];
}
return temp;
}
然后用不同的参数调用它两次:
int max1 = max(_num, size_of_num);
int max2 = max(_num2, size_of_num2);