std::vector
या किसी अन्य कंटेनर से किसी निश्चित संपत्ति वाले तत्वों को निकालने का कार्य स्वयं को कार्यात्मक शैली कार्यान्वयन के लिए उधार देता है: लूप, मेमोरी डिलोकेशन और सही ढंग से डेटा को स्थानांतरित करने से परेशान क्यों?क्या वेक्टर से तत्वों को निकालने के लिए std :: remove_if का बेहतर विकल्प है?
std::vector<int> ints;
...
ints.erase(
std::remove_if(ints.begin(),
ints.end(),
[](int x){return x < 0;}),
ints.end());
यह उदाहरण सभी तत्वों को एक पूर्णांक वेक्टर से शून्य से भी कम समय निकालता है:
हालांकि सी ++ में ऐसा करने का मानक तरीका निम्नलिखित मुहावरा हो रहा है।
मुझे यह न केवल बदसूरत बल्कि गलत तरीके से उपयोग करना आसान लगता है। यह स्पष्ट है कि std::remove_if
वेक्टर के आकार को बदल नहीं सकता है (जैसा कि इसका नाम सुझाएगा) क्योंकि यह केवल इटरेटर पास हो जाता है। लेकिन मेरे समेत कई डेवलपर्स, शुरुआत में नहीं पाते हैं।
तो क्या यह हासिल करने के लिए एक सुरक्षित और उम्मीदवार अधिक सुरुचिपूर्ण तरीका है? यदि नहीं, क्यों?
प्रिंट हमेशा की तरह, अगर यह जटिल हो जाता है, एक (टेम्पलेट) समारोह में लपेट। –
@ करोलो हॉर्वथ: हाँ, लेकिन यह एक आम काम है। मैं इसके लिए अपना खुद का काम नहीं लिखना चाहता हूं। यह मानक पुस्तकालय में है, बस अन्य भाषाओं की तरह। –
हाँ, सुनिश्चित करें, प्रार्थना करें या एक प्रस्ताव लिखें और कुछ सालों तक प्रतीक्षा करें। * Facepalm *। –