التحقق من وجود العناصر
جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 37 من 56.
عند العمل مع المجموعات (sets)، غالباً ما تحتاج إلى التحقق مما إذا كان عنصر معين موجوداً قبل إجراء العمليات عليه. توفر الطريقة .count() وسيلة بسيطة للتحقق مما إذا كان العنصر موجوداً في مجموعتك.
تماماً كما هو الحال مع الخرائط، فإن الطريقة .count() تُرجع القيمة 1 إذا كان العنصر موجوداً في المجموعة، و 0 إذا لم يكن موجوداً. وهذا يجعلها مثالية لعمليات التحقق الشرطية:
std::set<int> numbers = {10, 20, 30};
if (numbers.count(20)) {
std::cout << "Found 20 in the set!" << std::endl;
} else {
std::cout << "20 is not in the set" << std::endl;
}هذا النهج أكثر أماناً بكثير من محاولة الوصول إلى العناصر مباشرة، خاصة عندما لا تكون متأكداً من وجودها. يمكنك استخدام .count() للتحقق من صحة إدخال المستخدم، أو منع الأخطاء، أو اتخاذ قرارات بناءً على ما هو مخزن حالياً في مجموعتك.
التحدي
سهلقم بإنشاء برنامج يوضح كيفية التحقق بأمان من وجود العناصر في std::set قبل إجراء العمليات عليها. سيختبر هذا التحدي فهمك لطريقة .count() للتحقق من العناصر.
سيتم توفير المدخلات التالية:
- عدد صحيح
nيمثل عدد العناصر التي سيتم إضافتها في البداية إلى المجموعة (set) - ثم
nمن الأعداد الصحيحة ليتم إدراجها في المجموعة - عدد صحيح
mيمثل عدد العناصر المراد البحث عنها - ثم
mمن الأعداد الصحيحة للتحقق من وجودها في المجموعة
يجب على برنامجك القيام بما يلي:
- إنشاء
std::set<int>فارغة - قراءة عدد العناصر المراد إضافتها وإدراجها في المجموعة باستخدام
.insert() - قراءة عدد العناصر المراد البحث عنها
- لكل عنصر بحث، استخدم طريقة
.count()للتحقق مما إذا كان موجوداً في المجموعة - طباعة رسائل مناسبة بناءً على ما إذا كان قد تم العثور على كل عنصر أم لا
- بعد كل عمليات البحث، قم بطباعة العدد الإجمالي للعناصر التي تم العثور عليها
استخدم تنسيق المخرجات الدقيق التالي:
لكل نتيجة بحث:
Searching for [number]: Foundللعناصر التي لم يتم العثور عليها:
Searching for [number]: Not foundالملخص في النهاية:
Total found: [count] out of [total_searches]استخدم numbers.count(searchValue) للتحقق مما إذا كان العنصر موجوداً في المجموعة. إذا أعادت القيمة 1، فإن العنصر موجود؛ وإذا أعادت 0، فإن العنصر غير موجود. احتفظ بعداد لتتبع عدد العناصر التي تم العثور عليها بنجاح خلال عمليات البحث.
ورقة مرجعية
استخدم .count() للتحقق مما إذا كان العنصر موجوداً في المجموعة (set). تُرجع القيمة 1 إذا كان العنصر موجوداً، و 0 إذا لم يكن موجوداً:
std::set<int> numbers = {10, 20, 30};
if (numbers.count(20)) {
std::cout << "Found 20 in the set!" << std::endl;
} else {
std::cout << "20 is not in the set" << std::endl;
}هذه الطريقة أكثر أماناً من محاولة الوصول إلى العناصر مباشرة، وهي مثالية للفحوصات الشرطية والتحقق من صحة المدخلات.
جرّب بنفسك
#include <iostream>
#include <set>
using namespace std;
int main() {
// قراءة عدد العناصر المراد إضافتها إلى المجموعة
int n;
cin >> n;
// إنشاء مجموعة فارغة
set<int> numbers;
// قراءة وإدراج n من العناصر في المجموعة
for (int i = 0; i < n; i++) {
int element;
cin >> element;
numbers.insert(element);
}
// قراءة عدد العناصر المراد البحث عنها
int m;
cin >> m;
int foundCount = 0;
// TODO: اكتب كودك أدناه
// لكل عنصر بحث:
// 1. قراءة قيمة البحث
// 2. استخدام numbers.count(searchValue) للتحقق مما إذا كان موجوداً
// 3. طباعة الرسالة المناسبة
// 4. تحديث foundCount إذا تم العثور على العنصر
// طباعة الملخص
cout << "Total found: " << foundCount << " out of " << m << endl;
return 0;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المؤشرات والذاكرة
ما هو المؤشر؟معامل العنوان (Address-Of)معامل الوصول للقيمة (Dereference)المؤشرات الفارغة (Null Pointers)المؤشرات والمصفوفاتالذاكرة الديناميكية باستخدام 'new'تحرير الذاكرة باستخدام 'delete'مراجعة - تمارين على المؤشرات2المتجهات (المصفوفات الديناميكية)
مقدمة إلى std::vectorإنشاء Vectorإضافة العناصرالوصول إلى العناصرحجم الـ Vectorالتكرار باستخدام For Loopالـ Range-Based For Loopإزالة العناصرملخص - عمليات الـ Vector6المجموعات (عناصر فريدة)
مقدمة إلى std::setإنشاء مجموعة وإضافة عناصرالتحقق من وجود العناصرإزالة العناصرالتكرار عبر المجموعةملخص - أرقام فريدة