فهم الفرق: المسح مقابل الإزالة
في عالم برمجة C، std::erase وstd::remove هما نوعان وظائف مميزة تخدم أغراضًا مختلفة عندما يتعلق الأمر بتعديل الحاويات. بينما يمكن استخدام كلتا الوظيفتين لإزالة العناصر من الحاوية، إلا أنهما يختلفان في سلوكهما. الإزالة هي خوارزمية تعمل على مجموعة من العناصر وتعيد ترتيبها داخل الحاوية. لا يقوم بحذف أي عناصر مباشرة ولكنه ينقل العناصر غير المطابقة إلى العناصر المطابقة. تقوم هذه العملية بإنشاء مجموعة من العناصر المتطابقة في بداية التسلسل والعناصر غير المتطابقة في النهاية. من ناحية أخرى، std::erase هي وظيفة تزيل عناصر محددة من الحاوية، مما يقلل حجمها بشكل فعال. فهو يأخذ نطاقًا من التكرارات كوسيطات ويحذف جميع العناصر الموجودة ضمن هذا النطاق، بما في ذلك العناصر التي تم وضع علامة عليها للإزالة.
فهم الإخراج
في مثال التعليمات البرمجية المقدم، يمكن إبداء الملاحظات التالية:
Std::remove: عندما يتم استخدام std::remove بدون std::erase، فإنه ببساطة يعيد ترتيب العناصر، مع ترك حجم المتجه دون تغيير. لذلك، فإن التكرار عبر المتجه سيؤدي إلى إخراج 2,2.
Std::erase:
عندما يتم استخدام std::erase بالتزامن مع std::remove، فإنه يزيل العناصر المطابقة (في هذه الحالة، التكرار الفردي 1) ويقوم بتحديث حجم المتجه وفقًا لذلك. ونتيجة لذلك، يظهر الإخراج 2 فقط.ملاحظات إضافية على Std::remove
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3