11
나는 런타임 값을 취하여 가능한 값 집합의 멤버인지를 결정하는 간단한 템플릿 함수를 정의하고자한다.C++ : 정적 배열을 인라인으로 정의하는 방법이 있습니까?
사용법 : 내가 하나가 정적 배열 인라인을 만드는 방법을 참조하지 않는 한이 실패 할 수밖에되어 있다고 가정
template <typename T, size_t size>
bool isoneof(T value, T (&arr)[size])
{
for (size_t i = 0; i < size; ++i)
if (value == arr[i])
return true;
return false;
}
: 같은
int x; // <- pretend this came from elsewhere...
if (isoneof(x, {5,3,9,25}) ...
뭔가.
내가 사용할 수 있습니다
int kPossibilities[] = {5,3,9,25};
if (isoneodf(6, kPossibilities)) ...
을 isoneof 에 약간의 변경으로 : 또한 조금 더 유연하게
template <typename T1, typename T2, size_t size>
bool isoneof(T1 value, const T2 (&arr)[size])
{
for (size_t i = 0; i < size; ++i)
if (value == arr[i])
return true;
return false;
}
합니다.
누구나 개선 할 점이 있습니까? "정적 값 집합 인라인"을 정의하는 더 좋은 방법은입니까?
그것은 C 시간에 관하여를 ++ 1x, 그렇지 않습니까? 배열 리터럴은 거기에 완벽하게 유효합니다 ... – xtofl
@xtofl, 그것의 높은 시간은 ... –
기대! ;) – Mordachai