मैं मानचित्र में एक ही कुंजी को कई बार डालने की कोशिश कर रहा हूं लेकिन विभिन्न मानों के साथ। यह काम नहीं करता है। मुझे पता है कि ऑपरेटर [] यह काम करता है, लेकिन मेरा सवाल यह है कि यदि सम्मिलन का यह व्यवहार सही है? सम्मिलित नहीं करना चाहिए() आवेषण? मुझे आश्चर्य है कि मानक क्या कहता है। दुर्भाग्यवश मेरे पास यह नहीं है (सी ++ के लिए मानक) इसलिए मैं जांच नहीं कर सकता।
सहायक उत्तरदाताओं के लिए धन्यवाद।std :: map से क्यों सम्मिलित करना अपडेट नहीं करना चाहते हैं? [सी ++]
उत्तर
आप विभिन्न मूल्यों के साथ एक ही कुंजी सम्मिलित करना चाहते हैं, तो , आपको इसके बजाय std::multimap
की आवश्यकता है।
std::map::insert
कुछ भी नहीं करेगा यदि कुंजी पहले से मौजूद है। std::map::operator[]
पुराने मान को ओवरराइट करेगा।
एसटीएल संदर्भ के लिए आपको सी ++ मानक की आवश्यकता नहीं है; http://www.cplusplus.com/reference/ जैसे कुछ भी करेंगे।
मुझे यकीन नहीं है कि मैं पूरी तरह से समझता हूं, लेकिन ऐसा लगता है कि आप मानचित्र में अपनी पिछली प्रविष्टियों को ओवरराइट कर रहे हैं; map
केवल एक मूल्य प्रति कुंजी स्टोर करता है।
इसके बजाय, आपको multi_map
का उपयोग करने की आवश्यकता होगी। यह आपको अलग-अलग मानों के साथ एक ही कुंजी डालने की अनुमति देगा। आप इस तरह operator[]
खो देते हैं, क्योंकि यह वास्तव में समझ में नहीं आता है। (। करते हैं, तो सुनिश्चित करें कि डालने, लेकिन यह है कि ऑपरेटर भी पुन: प्राप्त करता कौन सा मूल्य इसे पुनः प्राप्त करना चाहिए?)
यहाँ एक उदाहरण (here से संशोधित) है:
#include <iostream>
#include <map>
int main(void)
{
std::multimap<std::string, int> m;
m.insert(std::make_pair("a", 1));
m.insert(std::make_pair("b", 2));
m.insert(std::make_pair("c", 3));
m.insert(std::make_pair("a", 4));
m.insert(std::make_pair("b", 5));
m.insert(std::make_pair("a", 6));
std::cout << "Number of elements with key a: " << m.count("a") << endl;
std::cout << "Number of elements with key b: " << m.count("b") << endl;
std::cout << "Number of elements with key c: " << m.count("c") << endl;
std::cout << "Elements in m: " << endl;
for (m::iterator it = m.begin(); it != m.end(); ++it)
{
std::cout << " [" << it->first << ", " << it->second << "]" << endl;
}
}
- 1. std :: map को std :: C++
- 2. std :: map
- 3. कुछ एंड्रॉइड एसडीके घटक स्थापित नहीं करना चाहते हैं। क्यों?
- 4. std :: map
- 5. एक सी # अनुप्रयोग स्क्रिप्ट करना चाहते हैं
- 6. std :: map
- 7. std :: map
- 8. मैं std :: map
- 9. std :: map :: find()
- 10. शब्दकोश थ्रेड-सुरक्षित एक्सेस करना चाहते हैं?
- 11. std :: context_wrapper का उपयोग std :: map
- 12. बूस्ट :: पायथन- स्वचालित रूप से dict -> std :: map से कनवर्ट करना संभव है?
- 13. jqplot - y अक्ष को प्रदर्शित/प्रदर्शित नहीं करना चाहते हैं
- 14. डुप्लिकेट टेबल सम्मिलित करना
- 15. एक मार्कर के infobubble की सामग्री प्राप्त करना चाहते हैं?
- 16. std :: fstream कक्षाएं std :: string क्यों नहीं लेती हैं?
- 17. बाइट की सूची # सी को सम्मिलित करना []
- 18. सम्मिलित करना डेटा wpdb
- 19. जारी करना सम्मिलित
- 20. सम्मिलित करना डेटा php
- 21. सम्मिलित करना तत्वों
- 22. प्रारंभकर्ता सूची से std :: tuple प्रारंभ करना
- 23. CSS3 संक्रमण एक रंग जोड़ना चाहते हैं और इसे दूर करना चाहते हैं
- 24. std :: map iterator कैसे काम करता है?
- 25. std :: map पर थ्रेड-सुरक्षित क्या ऑपरेशन हैं?
- 26. std :: map find_if condition style भ्रम
- 27. LINQ से SQL - रिकॉर्ड अपडेट करना
- 28. std :: map और -fno-implicit-templates
- 29. const std :: map <boost :: tuples :: tuple, std :: string>?
- 30. जेएसओएन पुट अनुरोधों के लिए रेल "हेड: no_content" वापस क्यों करना चाहते हैं?
धन्यवाद। और क्योंकि मेरे पास कम से कम 15 char होना है, मैं इस पाठ को टाइप कर रहा हूं। –