메서드 내에서 인수를 변경 가능합니까?메서드 내에서 변경 인수
int NumSet::max()
{
int i, temp=1;
for (i=0;i<5;i++)
{
if (_num[i]>temp) temp=_num[i];
}
return temp;
}
같은 방법을 사용하여 _num 배열에 대해 _num2을 (를) 사용하려고합니다. 덕분에 !
메서드 내에서 인수를 변경 가능합니까?메서드 내에서 변경 인수
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;
}
(..이 벡터는 적어도 다섯 가지 요소를 가지고 있다고 가정 그것이 범위를 벗어날 조건에 취약으로 나는이 코드를 사용하는 것이 좋습니다 않을 것이다)
C++ 11 사용자라면'std :: begin (_num)'과'std :: end (_num)'으로 일반화 할 수 있습니다. – Xymostech
예, 다른 배열에도 같은 방법을 사용할 수 있습니다. 당신은 당신의 방법에 인수로 배열을 전달해야합니다
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);
두 종류의 array-likes는 어떤 타입입니까? – cdhowie