मेरे पास एक std :: unordered_map है कि मैं पुनरावृत्ति के माध्यम से तत्वों को हटा दूंगा।तत्वों को हटाते समय मैं std :: unordered_map को पुनः लोड करने से कैसे रोकूं?
auto itr = myMap.begin();
while (itr != myMap.end()) {
if (/* removal condition */) {
itr = myMap.erase(itr);
} else {
++itr;
}
}
मैं किसी भी महंगा ऑपरेशनों को जब तक मैं तत्वों है कि मैं हटाने की जरूरत के सभी को दूर करने के लिए किया कर रहा हूँ के लिए नक्शे को रोकने के लिए चाहते हैं। क्या मेरे पास वैध चिंता है? क्या मैं गलत समझ रहा हूं कि आंतरिक संग्रहण कैसे काम करता है?
मुझे पता है कि हम 4 साल बाद इस प्रश्न को देख रहे हैं, लेकिन मुझे यह जवाब देखने में खुशी है कि यह जवाब मिश्रण में प्रवेश करता है। दस्तावेज़ीकरण को फिर से देखकर, यह स्पष्ट है कि सबसे खराब-कास्ट जटिलता संभावित रीहैशिंग से नहीं आती है, बल्कि हैश टकराव से। मुझे लगता है कि यह आधिकारिक तौर पर सही जवाब है। – vmrob
तो तालिका केवल बढ़ सकती है। –
एक अनियंत्रित कंटेनर में बाल्टी की संख्या कभी भी 'मिटा' के तहत घट जाएगी। 'रिहाश' के तहत संख्या को कम करने की अनुमति है, और सभी कार्यान्वयन ऐसा करेंगे। –