我有3个数组,
int fJump [13],sJump [13],tJump [13];
其中每一个都有记录在其中的跳跃。我需要检查其中一个是否大于max
,以获得最大价值。
所以我可以这样做:
for(int i=0;i<n;i++){
if(max<fJump[i]){
max = fJump[i];
}
if(max<sJump[i]){
max = sJump[i];
}
if(max<tJump[i]){
max = tJump[i];
}
}
但有时会有更多,所以写这样的话很头疼。那会有更好,更快的解决方案吗?
答案 0 :(得分:11)
您可以使用标准库中的max_element
函数,而不是编写自己的循环:
int max = *std::max_element(fJump, fJump+13);
max = std::max(max, *std::max_element(sJump, sJump+13));
max = std::max(max, *std::max_element(tJump, tJump+13));
您还可以在循环中使用max
函数:
for(int i=0;i<n;i++){
max = std::max(max, fJump[i]);
max = std::max(max, sJump[i]);
max = std::max(max, tJump[i]);
}
答案 1 :(得分:4)
int * arrs[]={fJump, sJump, tJump};
int max=arrs[0][0];
for(int j=0; j<sizeof(arrs)/sizeof(*arrs); j++)
{
for(int i=0; i<n; i++)
{
if(max<arrs[j][i])
max=arrs[j][i];
}
}
并且您可以在int
中添加任意数量的arrs
指针(只要它们都来自相同大小的数组 - 即n
)。
答案 2 :(得分:2)
int fJump[13], sJump[13], tJump[13];
int * pA[] = { fJump, sJump, tJump };
int l = sizeof(pA)/sizeof(pA[0]);
for(int i = 0; i < 13; ++i)
{
for (int j = 0; j < l; ++j)
{
if(max < pA[j][i])
{
max = pA[j][i];
}
}
}
答案 3 :(得分:0)
您可以使用max_element:
#include <algorithm>
#include <iostream>
int main()
{
int a1[] = { 7,3,1,29,5 };
int a2[] = { 11,12,18,5,4,3 };
int a3[] = { 10,10,11,10 };
std::vector< int > allMax{
*std::max_element( a1, a1+5 ),
*std::max_element( a2, a2+6 ),
*std::max_element( a3, a3+4 ),
};
auto maxOfAll = *std::max_element( allMax.begin(), allMax.end() );
std::cout << maxOfAll << std::endl;
}
答案 4 :(得分:-3)
您可以使用int类型数组来处理它。