जानने के बिना, इटेटरेटर का उपयोग करके तत्व हटाएं, मेरे पास एक स्थिति है। मैंने अपने कार्य में से एक के लिए एक टेम्पलेट फ़ंक्शन का उपयोग किया है। इस समारोह में, मैं संदर्भ द्वारा इटरेटर पास करता हूं। अब, मुझे एक वेक्टर से कुछ तत्वों को हटाना होगा। मैं केवल iterators का उपयोग करके यह कैसे करूँ? Pl संबंधित कोड ढूंढें:वेक्टर
template <class BidirectionalIterator, class Iterator> bool
SomeFunc(BidirectionalIterator& first, BidirectionalIterator& last, Iterator anotherVecBegin)
{
while((first+1) != last)
{
if(some_condition)
// delete (first); HOW?
else if(some_other_condition)
// delete (first + 1); HOW?
}
// add something to another vector using anotherVecBegin
return true;
}
कई पहले से ही पूछे जाने वाले प्रश्न हैं, लेकिन उनके पास सभी संदर्भ में वेक्टर हैं। इसलिए myVec.erase(*first)
आसान है ..
मुझे यह भी पता है कि यह एक बहुत अच्छा तरीका नहीं है कि मैं संदर्भ द्वारा इसे इटरेटर भेजता हूं। लेकिन मैं सरल नियमों का पालन कर रहा हूं: जब कुछ बदलने की उम्मीद है या भारी प्रतिलिपि से बचने के लिए संदर्भों का उपयोग करें। मेरा परिदृश्य पहली स्थिति फिट कर रहा है।
तो मैं कैसे हटा सकता हूं?
देखें ['std :: मिटाएं (std :: remove_if()) 'idiom] (http://en.cppreference.com/w/cpp/ एल्गोरिदम/हटाएं) – YSC
@YSC मुझे नहीं लगता कि वहां 'std :: erase' है। बिंदु यह है कि आपको 'std :: vector :: erase' पर कॉल करने के लिए 'std :: vector' उदाहरण की आवश्यकता है। – juanchopanza
@juanchopanza यहां नहीं है। हालांकि मैं संपादित नहीं कर सकता। सोमवार सुबह टाइपो। – YSC