您可以使用标准算法std::min_element
在头<algorithm>
宣称找到元素WITN最小总和。例如
#include <algorithm>
int *min = std::min_element(playerSums, playerSums + 3);
std::cout << playerNames[min - playerSums]
<< " had the lowest values and got the sum " << *min
<< std::endl;
同样可以使用标准功能std::begin
,std::end
和std::distance
使用的算法,您可以编写类似的算法自己功能的头部声明<iterator>
#include <algorithm>
#include <iterator>
int *min = std::min_element(std::begin(playerSums), std::end(playerSums));
std::cout << playerNames[ std::distance(playerSums, min)]
<< " had the lowest values and got the sum " << *min
<< std::endl;
而是被写入。例如
size_t min_sum(int playerSums[], size_t n)
{
size_t min = 0;
for (size_t i = 1; i < n; i++)
{
if (playerSums[min] < playerSums[i]) min = i;
}
return min;
}
size_t min = min_sum(playerSums, sizeof(playerSums)/sizeof(*playerSums) );
std::cout << playerNames[min]
<< " had the lowest values and got the sum " << playerSums[min]
<< std::endl;
如果您需要跳过等于零,则数组元素的功能将类似于
size_t min_sum(int playerSums[], size_t n)
{
size_t min = 0;
while (min < n && playerSums[i] == 0) ++min;
for (size_t i = min; i < n; i++)
{
if (playerSums[min] < playerSums[i]) min = i;
}
return min;
}
size_t min = min_sum(playerSums, sizeof(playerSums)/sizeof(*playerSums) );
if (min != sizeof(playerSums)/sizeof(*playerSums))
{
std::cout << playerNames[min]
<< " had the lowest values and got the sum " << playerSums[min]
<< std::endl;
}
请解释您当前的代码有错误。当你在这里,解释内部'if'语句背后的逻辑:) – 2014-10-02 17:40:24
你见过http://stackoverflow.com/questions/23871658/cs-min-element-not-working-for-array? – matsjoyce 2014-10-02 17:41:31
'std :: vector'让生活变得如此简单。 – 2014-10-02 17:42:52