(+) छोरों के लिए C ++ 11 रेंज-आधारित के लिए सामान्य उदाहरण हमेशा कुछ इस तरह सरल होता है:
std::vector<int> numbers = { 1, 2, 3, 4, 5, 6, 7 };
for ( auto xyz : numbers )
{
std::cout << xyz << std::endl;
}
जिस मामले xyzमें ए int। लेकिन, क्या होता है जब हमारे पास नक्शे जैसा कुछ होता है? इस उदाहरण में चर का प्रकार क्या है:
std::map< foo, bar > testing = { /*...blah...*/ };
for ( auto abc : testing )
{
std::cout << abc << std::endl; // ? should this give a foo? a bar?
std::cout << abc->first << std::endl; // ? or is abc an iterator?
}
जब ट्रेस किया जा रहा कंटेनर कुछ सरल होता है, तो ऐसा लगता है कि रेंज-आधारित () लूप्स हमें प्रत्येक आइटम देगा, न कि इट्रेटर। जो अच्छा है ... अगर यह पुनरावृत्त था, तो पहली बात यह है कि हमें हमेशा ऐसा करना होगा, वैसे भी इसे रोकना होगा।
लेकिन मैं उलझन में हूं कि जब यह नक्शे और मल्टीमैप जैसी चीजों की बात करता है तो क्या करना है।
(मैं अभी भी जी ++ 4.4 पर हूं, जबकि रेंज-आधारित लूप जी ++ 4.6+ में हैं, इसलिए मुझे अभी तक प्रयास करने का मौका नहीं मिला है।)
std::beginऔरstd::endएक ही नाम के तहत कार्यों या सदस्य कार्यों के साथ एक अपवित्र नृत्य करता है ।