Possible Duplicate:
remove_if equivalent for std::mapमैं std :: remove_if के साथ std :: set से स्ट्रिंग को क्यों नहीं हटा सकता?</p> <pre><code>set <wstring> strings; // ... </code></pre> <p>मैं एक विधेय के अनुसार तार निकालना चाहते हैं जैसे::
मैं तार का एक सेट है
std::remove_if (strings.begin(), strings.end(), [](const wstring &s) -> bool { return s == L"matching"; });
जब मैं इस प्रयास करते हैं, मैं निम्नलिखित संकलक मिल त्रुटि:
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\algorithm(1840): error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const std::basic_string<_Elem,_Traits,_Ax>'
ई rror का सुझाव है कि std::string
में एक मूल्य-प्रतिलिपि प्रतिलिपि नहीं है (जो अवैध होगा)। क्या std::remove_if
std::set
के साथ उपयोग करना किसी भी तरह से बुरा है? क्या मुझे इसके बजाय कुछ और करना चाहिए जैसे कि set::find()
के कई पुनरावृत्तियों के बाद set::erase()
?
आपका सरल नमूना 'strings.erase (एल" मिलान ") द्वारा प्रतिस्थापित किया जा सकता है,'। एक मानता है कि आपका * वास्तविक * भविष्यवाणी तुच्छ नहीं है। –
@ रोब हां यह सिर्फ एक उदाहरण था, मुझे फ़ंक्शन ऑब्जेक्ट की आवश्यकता होती है। – Benj