में सभी मानों को सेट करना एक ही मूल्य पर std::map
में सभी मानों को सेट करने के लिए, प्रत्येक मान पर एक लूप को पुन: उपयोग किए बिना?std :: map
उत्तर
सी ++ में <algorithm>
से विधि है लेकिन यह नक्शे के लिए काम नहीं करता है। वास्तव में, सहयोगी कंटेनर के लिए एल्गोरिदम समर्थन आम तौर पर अच्छा नहीं है।
नतीजतन, आप एक interation का उपयोग करें या एक उपयुक्त functor for_each
साथ प्रयोग किया जा करने के लिए लिखने के लिए होगा (लेकिन मैं इस अनावश्यक भूमि के ऊपर करने पर विचार):
template <typename TKey, typename TValue>
struct resetter : public std::unary_function<std::pair<TKey, TValue> > {
TValue const value;
public resetter(value const& v) : value(v) { }
public void operator()(std::pair<TKey, TValue>& v) {
v.second = value;
}
};
for_each(map.begin(), map.end(), resetter<Key, Value>(value));
बढ़ावा :: असाइन पुस्तकालय एक कंटेनर की सामग्री शुरू करने में मदद करने के लिए सभी प्रकार की साफ चीजें हैं। मेरा विचार था कि इसका उपयोग नक्शा के माध्यम से स्पष्ट रूप से पुन: प्रयास करने से बचने के लिए किया जा सकता है। दुर्भाग्य से, नक्शे उत्सुक जानवरों को प्रारंभ करना मुश्किल है क्योंकि चाबियाँ अद्वितीय होनी चाहिए। निचली पंक्ति यह है कि लूप के लिए एक सरल नक्शा आरंभ करने का सबसे अच्छा तरीका है। यह बहुत ही सुरुचिपूर्ण नहीं हो सकता है, लेकिन यह काम पूरा हो जाता है और एसटीएल के साथ किसी भी परिचित व्यक्ति के द्वारा तत्काल समझ में आता है।
map <int,string> myMap;
for(int k=0;k<1000;k++)
myMap.insert(pair<int,string>(k,string("")));
इस बाकी पोस्ट में मैंने उपर्युक्त निष्कर्ष तक पहुंचने के लिए यात्रा की व्याख्या की है।
बूस्ट :: असाइनमेंट मानचित्र पर कुछ छोटी संख्याओं को असाइन करना आसान बनाता है।
map<string,int> m;
insert(m)("Bar", 1)("Foo", 2);
या
map<int,int> next = map_list_of(1,2)(2,3)(3,4)(4,5)(5,6);
अपने मामले हैं, जहां आप एक ही मूल्य के साथ पूरे मानचित्र आरंभ करना चाहते हैं, वहाँ उपयोगिताओं दोहराने और repeat_fun हैं।
कुछ इस तरह कोनराड रूडोल्फ के रूप में एक मल्टीमैप (अपरीक्षित कोड स्निपेट) के साथ काम करना चाहिए
pair<int,string> init(0,string(""));
multimap <int,string> myMap = repeat(1000,init);
के रूप में बताया, तो आप एक ही सटीक मूल्य के साथ एक मानचित्र आरंभ नहीं कर सकता, क्योंकि चाबियाँ अद्वितीय होना चाहिए।
इससे जीवन अधिक जटिल (मजेदार?) बनाता है। कुछ इस तरह, शायद:
map <int,string> myMap;
struct nextkey
{
int start;
nextkey(s) : start(s) {}
pair<int,string> operator()()
{
return pair<int,string>(start++,string(""));
}
};
myMap = repeat_fun(1000,nextkey(0));
अब, यह बहुत जटिल हो रही है, मैं अब लगता है कि एक सरल यात्रा
map <int,string> myMap;
for(int k=0;k<1000;k++)
myMap.insert(pair<int,string>(k,string("")));
आपका कोड स्निपेट एक साधारण मानचित्र में काम नहीं करेगा क्योंकि आप एक ही कुंजी फिर से डालेंगे। आपको इस मामले में जनरेटर फ़ंक्शन का उपयोग करना होगा। –
अच्छा बिंदु! यह एक multimap होना होगा, या repeat_fun का उपयोग करना मुझे आश्चर्य है कि मूल सवाल क्या चाहता था? – ravenspoint
हां बूस्ट :: असाइन करना नक्शे भरने का आपका सबसे आसान समाधान है। पूरी तरह से सहमत है, वाक्यविन्यास के अलावा लगभग स्क्रिप्ट चिकना है। –
मैं एक ही समस्या का सामना करना पड़ा लेकिन पाया गया कि सीमा लौटे जाने का रास्ता है बूस्ट :: एडाप्टर :: मूल्य परिवर्तनीय है, इसलिए इसका उपयोग सामान्य एल्गोरिदम जैसे std :: fill के साथ किया जा सकता है।
#include <boost/range/adaptor/map.hpp>
auto my_values = boost::adaptors::values(my_map);
std::fill(my_values.begin(), my_values.end(), 123);
- 1. std :: map
- 2. std :: map
- 3. std :: map
- 4. std :: map को std :: C++
- 5. मैं std :: map
- 6. std :: map :: find()
- 7. std :: context_wrapper का उपयोग std :: map
- 8. const std :: map <boost :: tuples :: tuple, std :: string>?
- 9. std :: map find_if condition style भ्रम
- 10. std :: map में find() की समय जटिलता?
- 11. std :: map और -fno-implicit-templates
- 12. std :: map iterator कैसे काम करता है?
- 13. stOS :: map
- 14. std :: जोड़ी की एक क्रमबद्ध std :: सूची को कैसे परिवर्तित करें :: std :: map
- 15. std :: map में कोई तत्व मौजूद है या नहीं?
- 16. std :: map पर थ्रेड-सुरक्षित क्या ऑपरेशन हैं?
- 17. क्या std :: map और std :: set intersect/diff करने का कोई तरीका है?
- 18. std :: set/std :: map के माध्यम से पुनरावृत्ति की समय जटिलता क्या है?
- 19. std :: multimap <key, value> और std :: map <key, std :: set <value>>
- 20. std :: vector और std :: list
- 21. std :: std :: weak_ptr key
- 22. jQuery - $ .map() और .map() के बीच डिज़ाइन असंगतता?
- 23. EXT-X-MAP टैग
- 24. std :: नक्शा डालने या std :: नक्शा ढूंढें?
- 25. std :: map :: clear() को कॉल करने के बाद स्मृति अभी भी सुलभ क्यों है?
- 26. #pragma पैक त्रुटि के कारण स्मृति भ्रष्टाचार - std map भ्रष्टाचार - डालने पर क्रैशिंग
- 27. क्या पागलपन पागल है या यह एक वास्तविक std map iterator स्मृति रिसाव है?
- 28. क्या std :: map ज्ञात (और मानक द्वारा गारंटीकृत) के माध्यम से पुनरावृत्ति का क्रम है?
- 29. क्या std :: map में तत्वों का ऑर्डर करने की गारंटी है?
- 30. std :: map को डिफ़ॉल्ट कन्स्ट्रक्टर पैरामीटर के रूप में कैसे पास करें
टोरस्टन, सी ++ एसटीएल 'मानचित्र' * हैश तालिका के रूप में लागू नहीं किया गया है। –