11
Çalışma zamanı değerini alan ve bir takım olası değerlerin bir üyesi olup olmadığını belirleyen basit bir şablon işlevi tanımlamak istiyorum.C++: Statik bir diziyi satır içi tanımlamanın bir yolu var mı?
Kullanımı: ben bir statik dizi satır içi nasıl oluşturabileceğini görmüyorum olarak bu, başarısızlığa mahkum olduğunu varsayalım
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;
}
: gibi
int x; // <- pretend this came from elsewhere...
if (isoneof(x, {5,3,9,25}) ...
şey.
Ben kullanabilirsiniz:
int kPossibilities[] = {5,3,9,25};
if (isoneodf(6, kPossibilities)) ...
isoneof için küçük bir değişiklikle: ayrıca biraz daha esnek hale getirir
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;
}
.
Herhangi bir geliştirme önerisi olan var mı? "statik değerler satır içi satırı" tanımlamak için daha iyi bir yol?
O C zaman meselesi ++ 1x değil mi? Dizi değişmezleri burada geçerli ... – xtofl
@xtofl, yüksek zaman ... –
Dört gözle bekliyorum! ;) – Mordachai