मेरे पास कोड का आवर्ती हिस्सा है जहां मैं enum class
के सभी सदस्यों पर लूप करता हूं।रेंज-आधारित के लिए एनम कक्षाओं के लिए अनुमति दें?
for
लूप जो मैं वर्तमान में उपयोग करता हूं, नए range-based for
की तुलना में बहुत अवांछित दिखता है।
क्या मेरे वर्तमान for
लूप के लिए वर्बोजिटी पर कटौती करने के लिए नई सी ++ 11 सुविधाओं का लाभ उठाने का कोई तरीका है?
वर्तमान कोड है कि मैं सुधार करने के लिए करना चाहते हैं:
enum class COLOR
{
Blue,
Red,
Green,
Purple,
First=Blue,
Last=Purple
};
inline COLOR operator++(COLOR& x) { return x = (COLOR)(((int)(x) + 1)); }
int main(int argc, char** argv)
{
// any way to improve the next line with range-based for?
for(COLOR c=COLOR::First; c!=COLOR::Last; ++c)
{
// do work
}
return 0;
}
दूसरे शब्दों में, यह अच्छा होगा अगर मैं की तरह कुछ कर सकता है: एक के रूप में शुमार के साथ ही
for(const auto& c : COLOR)
{
// do work
}
दिलचस्प। अडा के पास 1 9 83 से यह सुविधा थी। – Shark8
'(रंग) (((int) (x) + 1))' int' के बजाय, 'std :: underlying_type :: type' का उपयोग करने पर विचार करें। –
क्या यह उम्मीद है कि बैंगनी छोड़ा गया है? – kennytm