كيف أتحقق مما إذا كان المتجه واحد هو مجموعة فرعية أخرى؟

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

  •  28-09-2019
  •  | 
  •  

سؤال

حاليًا ، أعتقد أن أفضل خياري هو استخدام STD :: set_intersection ، ثم تحقق مما إذا كان حجم الإدخال الأصغر هو نفسه عدد العناصر المملوءة بواسطة set_intersection.

هل هناك حل أفضل؟

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

المحلول

جرب هذا:

if (std::includes(set_one.begin(), set_one.end(),
                  set_two.begin(), set_two.end()))
{
// ...
}

حول يشمل().

تقارن الخوارزمية التي تتضمن () تسلسلتين مصنفين ويعيد صحيحًا إذا كان كل عنصر في النطاق [start2 ، finish2) موجودًا في النطاق [start1 ، finish1). يعود خطأ خلاف ذلك. يتضمن () يفترض أن التسلسلات يتم فرزها باستخدام المشغل <() ، أو باستخدام شركات المسند.

يدير

على الأكثر ((Finish1 - start1) + (Finish2 - start2)) * 2 - 1 يتم إجراء مقارنات.

Plus O (nlog (n)) لفرز المتجهات. لن تحصل عليه أي أسرع من ذلك.

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