मैं एक साधारण टेम्पलेट फ़ंक्शन को परिभाषित करना चाहता हूं जो रनटाइम मान लेता है और यह निर्धारित करता है कि यह संभावित मानों के कुछ सेट का सदस्य है या नहीं।सी ++: क्या स्थैतिक सरणी इनलाइन को परिभाषित करने का कोई तरीका है?
उपयोग:
int x; // <- pretend this came from elsewhere...
if (isoneof(x, {5,3,9,25}) ...
कुछ की तरह:
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 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;
}
कौन सा भी यह एक बालक और अधिक लचीला बनाता है।
क्या किसी के पास प्रस्ताव करने में कोई सुधार है? "स्थिर मूल्य इनलाइन सेट" को परिभाषित करने का एक बेहतर तरीका?
यह सी के लिए समय के बारे में ++ 1x, है ना? ऐरे अक्षर पूरी तरह से मान्य हैं ... – xtofl
@xtofl, यह उच्च समय है ... –
इसके लिए तत्पर हैं! ;) – Mordachai