#include <algorithm> // std::transform
#include <iterator> // std::back_inserter
std::transform(
your_map.begin(),
your_map.end(),
std::back_inserter(your_values_vector),
[](auto &kv){ return kv.second;}
);
क्षमा करें कि मैंने कोई स्पष्टीकरण नहीं जोड़ा - मुझे लगा कि कोड इतना सरल है कि किसी भी स्पष्टीकरण की आवश्यकता नहीं है। इसलिए:
transform( beginInputRange, endInputRange, outputIterator, unaryOperation)
यह फ़ंक्शन रेंज ( - ) unaryOperation
से प्रत्येक आइटम पर कॉल करता है । ऑपरेशन के मूल्य में संग्रहीत किया जाता है ।inputIterator
beginInputRange
endInputRange
outputIterator
यदि हम पूरे मानचित्र के माध्यम से काम करना चाहते हैं - हम अपने इनपुट रेंज के रूप में map.begin () और map.end () का उपयोग करते हैं। हम वेक्टर में हमारे नक्शे मान संग्रहीत करना चाहते हैं - इसलिए हम अपने वेक्टर पर back_inserter उपयोग करने के लिए: back_inserter(your_values_vector)
। Back_inserter विशेष आउटपुट है जो दी गई (paremeter) संग्रह के अंत में नए तत्वों को धकेलता है। अंतिम पैरामीटर अपरिपक्वता है - यह केवल एक पैरामीटर लेता है - इनपुटइंटरेटर का मान। इसलिए हम लैम्ब्डा का उपयोग कर सकते हैं:
[](auto &kv) { [...] }
जहां और केवी केवल आइटम के जोड़े को मैप करने के लिए एक संदर्भ है। इसलिए यदि हम मानचित्र की वस्तुओं के केवल मूल्यों को वापस करना चाहते हैं, तो हम केवल kv.second लौटा सकते हैं:
[](auto &kv) { return kv.second; }
मुझे लगता है कि यह किसी भी संदेह की व्याख्या करता है।