में सेट
मैं क्या है:
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(4);
s.insert(5);
for(set<int>::iterator itr = s.begin(); itr != s.end(); ++itr){
if (!(*itr % 2))
s.erase(itr);
}
और हां, यह काम नहीं करता। क्योंकि इसे मिटा दिए जाने के बाद इसे बढ़ाया जाता है। क्या इसका मतलब यह है कि सेट से तत्व को मिटाने के बाद इसे हर बार सेट की शुरुआत को इंगित करना होगा?
आपके पास कोड में अतिरिक्त ब्रैकेट है। – qba
मिटाने के फ़ंक्शन में itr ++ क्यों अनुमति है, लेकिन बाहर नहीं? – Quincy
'itr ++' को बाहर की अनुमति है, लेकिन जब मूल्य अप्रयुक्त होता है तो '++ it' सामान्य रूप से बेहतर होता है, किसी भी समय किसी भी समय यह करने के लिए कठिन होने के कारणों के लिए ;-) इस मामले में, यह बेहतर हो सकता है सामान्य अच्छे अभ्यास को अनदेखा करें और 'itr ++' लिखें, सिर्फ इसलिए कि दोनों मामलों में कोड समान चिकना पढ़ता है। –