istream_iterator
आप iteratively एक istream
से आइटम है, जो आप निर्माता करने के लिए पारित निकालने के लिए अनुमति देता है में बचत। eof
ऑब्जेक्ट इस प्रकार समझाया गया है:
इस इटरेटर के लिए एक विशेष मान मौजूद है: स्ट्रीम ऑफ एंड स्ट्रीम; जब इटेटर इस मान पर सेट किया गया है तो या तो स्ट्रीम (ऑपरेटर शून्य * स्ट्रीम स्ट्रीम पर लागू होता है) के अंत तक पहुंच गया है या अपने डिफ़ॉल्ट कन्स्ट्रक्टर का उपयोग करके बनाया गया है (बिना किसी भी मूल_स्ट्रीम ऑब्जेक्ट के साथ इसे संबद्ध किए बिना)।
for_each
एक लूप निर्माण है जो इटरेटर # 1 लेता है और इसे तब तक बढ़ाता है जब तक यह इटरेटर # 2 के बराबर न हो जाए। यहां यह इटेटरेटर लेता है जो मानक इनपुट cin
को लपेटता है और इसे बढ़ाता है (जो वस्तुओं को निकालने का अनुवाद करता है) जब तक उपभोग करने के लिए कोई इनपुट नहीं होता है - इससे input
eof
के बराबर की तुलना करता है और लूप समाप्त होता है।
निर्माण [&] (int x) { frequency[x]++; }
एक anonymous function है; यह केवल इनलाइन कार्यों को लिखने का एक शॉर्टेंड तरीका है। लगभग एक ही प्रभाव तो संक्षेप में
unordered_map<int,int> frequency; // this NEEDS to be global now
istream_iterator<int> input(cin);
istream_iterator<int> eof;
void consume(int x) {
frequency[x]++;
}
for_each(input, eof, consume);
साथ प्राप्त किया जा सकता है: इस कोड को मानक इनपुट से पूर्णांकों पढ़ता है जब तक सभी उपलब्ध डेटा सेवन किया जाता है, एक नक्शा में प्रत्येक पूर्णांक की उपस्थिति आवृत्ति की गिनती रखते हुए।
नया सी ++ लैम्डा ऑपरेटर देखें! यह शानदार है – Minion91