तो मेरे पास 2 std::map
एस <string, shared_ptr<file> >
एक 'पुराना' है 'नया' मैं कौन सी फाइलें प्राप्त करना चाहता हूं हटा दिए गए थे और इसलिए फेंकने वाले differene को फिर से चलाने में सक्षम हो और साझा_ptr में कुछ सामान करें। क्या ऐसी चीज संभव है और इसे कैसे करें?मैप कुंजी की एक सूची को दूसरे से कैसे घटाएं और नया नक्शा प्राप्त करें (नक्शा ए - मैब बी = मैप सी)
उत्तर
हालांकि इसे लिखने में काफी आसान है (A
से अधिक सक्रिय करें और जांचें कि कुंजी B
में मौजूद है या नहीं), यह std::set_difference
के लिए नौकरी की तरह दिखता है। हम एक लैम्ब्डा या कुंजियों तुलना करने के लिए कुछ कस्टम विधेय, हालांकि की आवश्यकता होगी:
#include <iterator>
#include <map>
#include <string>
#include <algorithm>
typedef std::map<std::string, MyPtr> my_map;
my_map A; // given
my_map B; // given
void make_a_difference()
{
my_map C; // will hold the result
std::set_difference(A.begin(), A.end(),
B.begin(), B.end(),
std::insert_iterator<my_map>(C, C.end()),
[](const my_map::value_type & a, const my_map::value_type & b)
{ return a.first < b.first; }
);
}
आप स्वयं वह लिखना चाहते हैं, तो आप इस तथ्य है कि दोनों सीमाओं को पहले से ही हल कर रहे हैं का लाभ लेने पर विचार करना चाहिए, तो आप कर सकते हैं समांतर में दो पुनरावृत्तियों को आगे बढ़ाकर अस्तित्व के लिए एक फ्लैट खोज से बेहतर।
आप सी ++ 11 की जरूरत नहीं है, बस लैम्ब्डा के बजाय इस विधेय का उपयोग करें:
bool my_comp(const my_map::value_type & a, const my_map::value_type & b)
{
return a.first < b.first;
}
खबरदार मैप किया प्रकार पर कोई तुलना नहीं है! तो यदि आपके पास दोनों मानचित्रों में एक ही स्ट्रिंग कुंजी है, तो परिणाम में ऐसी कोई वस्तु नहीं होगी, भले ही दो मैप किए गए मान अलग-अलग हों। यदि यह अवांछनीय है, तो आपको एक अलग आउटपुट कंटेनर की आवश्यकता है (उदा। std::multimap<my_map::key_type, my_map::mapped_type>
) और एक अलग भविष्यवाणी।
- 1. पायथन में एक सूची को दूसरे में कैसे मैप करें?
- 2. std :: नक्शा एक कुंजी, दो मान
- 3. ए [बी [सी]] से बी [ए [सी]] को कैसे परिवर्तित करें यदि ए और बी मोनैड हैं?
- 4. छँटाई :: नक्शा जहां कुंजी एक std :: स्ट्रिंग
- 5. कॉपी std :: नक्शा डेटा एक और नक्शा
- 6. हैश मैप से चाबियों की सूची कैसे वापस करें?
- 7. एंड्रॉइड मैप व्यू त्रुटि: आपको केवल नक्शा एक्टिविटी
- 8. नक्शा
- 9. डेटा में मैप। मैप कार्यान्वयन?
- 10. नक्शा
- 11. एक [:] = बी और ए = बी [:]
- 12. क्या कोई नक्शा नक्शा कार्यान्वयन है जो निकटतम निहित कुंजी
- 13. मैप कुंजी
- 14. जांच करें कि सी ++ में अन्य नक्शा
- 15. नक्शा Haskell
- 16. सीडी + मैप कुंजी को std :: से अधिक कैसे क्रमबद्ध करें?
- 17. deserializing गैर स्ट्रिंग नक्शा कुंजी जैक्सन
- 18. कैसे std :: नक्शा कंटेनर
- 19. लेबल के बिना नक्शा कैसे प्राप्त करें?
- 20. क्लोजर आलसी नक्शा से आलसी नक्शा
- 21. ओकैम सूची: कार्यान्वयन और नक्शा कार्यों को कार्यान्वित करें
- 22. हाइबरनेट नक्शा जावा लांग
- 23. नक्शा
- 24. मिलान कुंजी पाने के लिए एक नक्शा सी ++
- 25. सी ++: std :: नक्शा
- 26. नक्शा Alt + Shift +] vim
- 27. हाइबरनेट नक्शा enum VARCHAR को
- 28. "ए/बी/सी" में कनवर्ट करने का सबसे आसान तरीका ["ए/बी/सी", "ए/बी", "ए"]
- 29. सी ++ नक्शा मिटाएं()
- 30. नक्शा कैसे
'' 'std :: set_difference''' पर एक नज़र डालें। –