를 작동하는지 알려주세요. 예를
#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;
당신이 알고리즘과 비슷한 자신의 함수를 작성할 수있는 알고리즘을 사용하는 <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;
대신 헤더에 선언 된 표준 기능 std::begin
, std::end
및 std::distance
를 사용하여 작성 될 수있는 동일하십시오. 그러면 제로인 배열의 요소를 이동해야하는 경우, 예를 들어
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 진술 뒤에 논리를 설명하십시오 :) –
본 적이 있습니까 http://stackoverflow.com/questions/23871658/cs-min-element-not-working-for-array? – matsjoyce
'std :: vector'는 삶을 훨씬 더 쉽게 만듭니다. –