मैं बस निम्नलिखित कोड लिखा है, और बहुत आश्चर्य यह संकलन नहीं करता था:समर्थन रिवर्स इटरेटर्स को मिटाना क्यों नहीं है?
std::deque<int> container;
// filling the container...
for (auto it = container.rbegin(); it != container.rend(); ++it)
if (*it == 5)
{
container.erase(it);
break;
}
आप देख सकते हैं, मैं, एक निश्चित मापदंड से मेल खाने पिछले तत्व हटाना चाहते हैं, यदि कोई हो।
त्रुटि
std :: Deque :: मिटा (std :: reverse_iterator करने के लिए कॉल के लिए कोई मिलता-जुलता समारोह ...
है पहले तो मुझे विश्वास नहीं था यह था । रिवर्स इटरेटर की वजह से है, लेकिन यह वास्तव में साथ begin
/end
यह हल करती है rbegin
/rend
की जगह के बाद से मामला है
तो, 2 सवाल:
- यह समर्थित क्यों नहीं है? क्या यह केवल उन छोटी सी चीजों में से एक है जो सी ++ कमेटी मानक में शामिल करना भूल गए हैं, या क्या इस अधिभार के लिए कोई औचित्य है?
- मुझे जो करना है वह करने का सबसे शानदार तरीका क्या है? क्या मैं इंडेक्स द्वारा पुन: प्रयास कर रहा हूं?
मुझे लगता है कि आपका उत्तर यहां है: http://stackoverflow.com/questions/1830158/how-to-call-erase-with-a-reverse- इटेटर –
'm_container' और' कंटेनर 'हैं, वही? – ZDF
@ZDF: हाँ, ज़ाहिर है। –