देखें, जैसे,http://en.cppreference.com/w/cpp/container/map/eraseसी ++ 17 में, सहयोगी कंटेनरों के पास 'मिटाने' सदस्य फ़ंक्शन क्यों होता है जो (गैर-`const`) `iterator` लेता है?
सी ++ वहाँ 03 में तीन भार के थे:
void erase(iterator pos);
void erase(iterator first, iterator last);
size_type erase(const key_type& key);
सी ++ 11 में, पहले और दूसरे भार के const_iterator
इतना है कि वे कर सकते थे लेने के लिए बदल रहे थे iterator
या const_iterator
के साथ बुलाया जाए।
iterator erase(const_iterator pos);
void erase(const_iterator first, const_iterator last);
size_type erase(const key_type& key);
सी ++ 17 में, एक गैर स्थिरांक अधिभार गया था फिर से शुरू की:
iterator erase(const_iterator pos);
iterator erase(iterator pos);
void erase(const_iterator first, const_iterator last);
size_type erase(const key_type& key);
पहले अधिभार भी मिट जाने के बाद एक तत्व को इटरेटर वापसी होने से सुधार इसकी आवश्यकता क्यों है? यह erase
के लिए जोड़ा गया था, न ही insert
के लिए, न ही vector
, deque
, और list
जैसे किसी भी अनुक्रम कंटेनर के लिए।