C++ Academy · درس

الخوارزميات غير المعدِّلة: ‏find وcount وall_of

ابحث في محتويات الحاويات واختبرها دون تغييرها.

الدرس 1 من 414 خطوة

الخوارزميات غير المعدِّلة: ‏find وcount وall_of درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.

العمليات للقراءة فقط

تفحص الخوارزميات غير المعدِّلة نطاقًا دون تغييره. وهي موجودة في <algorithm>.

std::find

حدّدوا أول عنصر يساوي قيمة معينة. وتُرجع الخوارزمية مكرّرًا، أو end إذا لم تعثر على العنصر.

#include <algorithm>
std::vector<int> v = {3, 1, 4, 1, 5};
auto it = std::find(v.begin(), v.end(), 4);
if (it != v.end()) std::cout << "found at " << (it - v.begin());

std::find_if

اعثروا على أول عنصر يطابق مسندًا.

auto it = std::find_if(v.begin(), v.end(),
    [](int x) { return x > 3; });

std::find_if_not

هي عكس find_if، إذ تبحث عن أول عنصر لا يطابق المسند.

std::count وstd::count_if

عدّوا التكرارات أو العناصر المطابقة. وتُرجعان ptrdiff_t.

int n = std::count(v.begin(), v.end(), 1);            // count of 1s
int m = std::count_if(v.begin(), v.end(),
    [](int x) { return x > 2; });

std::all_of وstd::any_of وstd::none_of

اختبروا مسندًا على النطاق:

  • all_of — تطابق جميع العناصر
  • any_of — يطابق عنصر واحد على الأقل
  • none_of — لا يطابق أي عنصر
bool allPositive = std::all_of(v.begin(), v.end(),
    [](int x) { return x > 0; });
bool anyEven = std::any_of(v.begin(), v.end(),
    [](int x) { return x % 2 == 0; });

std::equal

قارنوا نطاقين عنصرًا بعنصر.

std::vector<int> a = {1, 2, 3};
std::vector<int> b = {1, 2, 3};
bool same = std::equal(a.begin(), a.end(), b.begin());

std::mismatch

اعثروا على أول زوج من العناصر المختلفة بين نطاقين. وتُرجع الخوارزمية زوجًا من المكرّرات.

std::adjacent_find

اعثروا على أول زوج من العناصر المتجاورة والمتساوية، أو أول زوج يطابق مسندًا.

std::vector<int> v = {1, 2, 2, 3};
auto it = std::adjacent_find(v.begin(), v.end());
std::cout << *it;   // 2

std::min_element وstd::max_element

أرجِعوا مكرّرًا إلى أصغر عنصر أو أكبر عنصر. ومرّروا مسندًا للمقارنة بطريقة مختلفة.

auto it = std::max_element(v.begin(), v.end());
std::cout << *it;

std::for_each

استدعوا دالة لكل عنصر. وتُتجاهل قيمة الإرجاع الخاصة بالدالة.

std::for_each(v.begin(), v.end(),
    [](int x) { std::cout << x << " "; });

إصدارات النطاقات (C++20)

أضافت C++20 نسخًا تتعامل مع النطاقات وتقبل نطاقًا واحدًا بدلًا من مكرّرين. وتوفر صياغة أوضح.

#include <ranges>
auto it = std::ranges::find(v, 4);
bool ok = std::ranges::all_of(v, [](int x) { return x > 0; });

تحقق سريع

أي خوارزمية تُرجع true فقط إذا طابق كل عنصر مسندًا؟

مراجعة

تفحص الخوارزميات غير المعدِّلة النطاقات دون تغييرها، ومنها: find وcount وall_of/any_of/none_of وmin_element وequal. وتوفر نطاقات C++20 صياغة أوضح للتعامل مع نطاق واحد.

البدء مجانًا

تعلم C++ مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
51
الدروس
203

الأسئلة الشائعة

هل درس «الخوارزميات غير المعدِّلة: ‏find وcount وall_of» مجاني؟

نعم — نص درس «الخوارزميات غير المعدِّلة: ‏find وcount وall_of» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.

ماذا ستتعلم في «الخوارزميات غير المعدِّلة: ‏find وcount وall_of»؟

ابحث في محتويات الحاويات واختبرها دون تغييرها. تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟

لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «الخوارزميات غير المعدِّلة: ‏find وcount وall_of»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟

نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الخوارزميات غير المعدِّلة: ‏find وcount وall_of
  2. الخوارزميات المعدِّلة: ‏transform وcopy_if وreplace
  3. الفرز والتقسيم: ‏sort وstable_partition
  4. الخوارزميات الرقمية: ‏accumulate وreduce وtransform_reduce
← العودة إلى C++ Academy