मेरा मतलब है - हम जानते हैं कि std::map
के तत्व कुंजी के अनुसार क्रमबद्ध होते हैं। तो, मान लीजिए कि चाबियाँ पूर्णांक हैं। यदि मैं std::map::begin()
से std::map::end()
से for
का उपयोग कर पुन: प्रयास करता हूं, तो क्या मानक गारंटी है कि मैं परिणामस्वरूप क्रमशः कुंजी के साथ तत्वों के माध्यम से पुनरावृत्त करता हूं, आरोही क्रम में क्रमबद्ध करता हूं?क्या std :: map ज्ञात (और मानक द्वारा गारंटीकृत) के माध्यम से पुनरावृत्ति का क्रम है?
उदाहरण:
std::map<int, int> map_;
map_[1] = 2;
map_[2] = 3;
map_[3] = 4;
for(std::map<int, int>::iterator iter = map_.begin();
iter != map_.end();
++iter)
{
std::cout << iter->second;
}
यह कार्यान्वयन परिभाषित किया गया है इस या 234
मुद्रित करने के लिए गारंटी है?
वास्तविक जीवन कारण: मैं एक int
साथ std::map
कुंजी है। बहुत दुर्लभ परिस्थितियों में, मैं सभी तत्वों के माध्यम से, एक ठोस int
मान से अधिक कुंजी के साथ पुन: प्रयास करना चाहता हूं। हां, ऐसा लगता है कि std::vector
बेहतर विकल्प होगा, लेकिन मेरी "बहुत दुर्लभ स्थितियों" पर ध्यान दें।
संपादित: मुझे पता है, कि std::map
के तत्वों हल कर रहे हैं .. यह पता (उत्तर के अधिकांश के लिए यहाँ) बात करने के लिए कोई जरूरत नहीं। मैंने इसे अपने प्रश्न में भी लिखा है।
मैं एक कंटेनर के माध्यम से पुनरावृत्त कर रहा था जब मैं iterators और आदेश के बारे में पूछ रहा था। उत्तर के लिए धन्यवाद @ केरेक एसबी।
मामले में आप नहीं जानते थे: अपने वास्तविक जीवन में उपयोग कर सकते हैं का उपयोग करें 'नक्शा: : iterating शुरू करने के लिए बिंदु खोजने के लिए upper_bound'। –
मुझे यह पता है और मुझे पता है कि मैं सही जगह शुरू कर दूंगा। अगर ऑर्डर की गारंटी है तो मैं बस घूम गया। –
यदि आपकी चाबियां (संख्यात्मक सूचकांक) बोर्ड में काफी भिन्न होती हैं तो एक स्पैस वेक्टर समझदार नहीं होगा। मैं एक समान समाधान का उपयोग कर रहा हूं जिसके लिए संख्यात्मक सूचकांक 3-आयामी अंतरिक्ष में कार्टेसियन वाई-समन्वय का प्रतिनिधित्व करता है। इस परिदृश्य में एक वेक्टर का उपयोग करने से गीगाबाइट्स द्वारा मेरी मेमोरी पदचिह्न बढ़ेगी। इसलिए मुझे नहीं लगता कि वेक्टर यहां से एक पैनसिया है। –