الحصول على الاتحاد، تقاطع أو اختلاف مجموعات في C ++

StackOverflow https://stackoverflow.com/questions/1736017

سؤال

لدي بعض الأسئلة حول كيفية استخدام مجموعات C ++ (STD :: Set)

  1. هل هناك طريقة للحصول على النقابة أو تقاطع أو اختلاف اثنين من مجموعات C ++؟ (من السهل جدا كتابة وظيفتي الخاصة في ذلك، لكنني أردت أن أعرف ما إذا كان هناك وظيفة مدمجة لها)

  2. هل يمكن استخدام مجموعات C ++ كمفاتيح في الخريطة؟

هل كانت مفيدة؟

المحلول

استخدم ال set_difference(), set_union(), set_intersection() و set_symmetric_difference() المهام.

مجموعات والخرائط تدعم أي نوع رئيسي يمكن مقارنة. بشكل افتراضي، هذا يعني أن النوع لديه operator<() محددة، ولكن يمكنك توفير المقارنة الخاصة بك. مجموعات C ++ لا تملك operator<() لا يمكن استخدامها وبالتالي لا يمكن استخدامها كمفاتيح إلا إذا قمت بتوفير المقارنة الخاصة بك.

نصائح أخرى

بالنسبة لسؤالك الأول، ألق نظرة على

يمكن استخدام أي شيء كمفتاح في الخريطة طالما أنك تقدم فئة أو وظيفة يمكن أن تقارنها. هنا انه مثال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top