كيف نجعل عبارة switch في لغة C++ أكثر كفاءة؟

May 21, 2026

ترك رسالة

مايكل براون
مايكل براون
مايكل هو أحد موظفي المبيعات المخضرمين في شركة Ningbo Liming Relay Company Limited. منذ أن دخلت الشركة الأسواق الخارجية في عام 2004، كان مسؤولاً عن المبيعات الخارجية وأنشأ شبكة عملاء واسعة النطاق حول العالم.

مرحبًا يا من هناك! أنا تاجر في المحولات، وأقدم مجموعة واسعة من الخيارات عالية الجودة مثلمفتاح الطاقة العام للسيارات,مفتاح روكر مصغر، ومفتاح الروك للقارب. اليوم، أريد أن أتحدث عن كيفية جعل بيان التبديل في C++ أكثر كفاءة.

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

1. تقليل عدد المقارنات

الفكرة الأساسية وراء عبارة التبديل هي مقارنة قيمة بمجموعة من الثوابت. عندما يكون لديك قائمة طويلة من الحالات، يتعين على المترجم إجراء الكثير من المقارنات. أحد الحلول البسيطة هو تجميع الحالات المتشابهة.

#include <iostream> int main() { int day = 3; التبديل (يوم) { الحالة 1: الحالة 2: الحالة 3: std::cout << "إنه يوم من أيام الأسبوع" << std::endl; استراحة؛ الحالة 6: الحالة 7: std::cout << "إنها عطلة نهاية الأسبوع" << std::endl; استراحة؛ الافتراضي: std::cout << "يوم غير صالح" << std::endl; } العودة 0؛ }

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

2. استخدم جدول البحث

بالنسبة لبيانات التبديل التي تحتوي على عدد كبير من الحالات المتتالية، يمكن لجدول البحث أن يغير قواعد اللعبة. جدول البحث عبارة عن مصفوفة حيث يتوافق الفهرس مع القيمة الموجودة في عبارة التبديل، ويحتفظ عنصر المصفوفة بالنتيجة أو الإجراء الذي سيتم اتخاذه.

#include <iostream> const int numCases = 10; void action1() { std::cout << "الإجراء 1" << std::endl; } void action2() { std::cout << "Action 2" << std::endl; } //... دوال إجراء أخرى void (*actionTable[numCases])() = {action1, action2, /*... إجراءات أخرى */}; int main() { int input = 2; if (input >= 0 && input < numCases) { actionTable[input](); } else { std::cout << "إدخال غير صالح" << std::endl; } العودة 0؛ }

هنا، بدلاً من عبارة التبديل، لدينا مجموعة من المؤشرات الوظيفية. نحن ببساطة نصل إلى المصفوفة باستخدام قيمة الإدخال ونستدعي الوظيفة المقابلة. وهذا أسرع بكثير لأن الوصول إلى عنصر المصفوفة هو عملية زمنية ثابتة، في حين أن عبارة التبديل قد تتطلب مقارنات متعددة.

3. رتّب قضاياك بشكل استراتيجي

ترتيب الحالات في بيان التبديل مهم. إذا كنت تعلم أن بعض الحالات أكثر احتمالية لحدوثها من غيرها، فضعها في بداية عبارة التبديل.

#include <iostream> int main() { int userChoice; // افترض أن معظم المستخدمين يختارون الخيار 1 std::cout << "أدخل اختيارك (1، 2، 3): "; std::cin >> userChoice; التبديل (userChoice) { الحالة 1: std::cout << "لقد اخترت الخيار الأكثر شيوعًا" << std::endl; استراحة؛ الحالة 2: std::cout << "لقد اخترت الخيار 2" << std::endl; استراحة؛ الحالة 3: std::cout << "لقد اخترت الخيار 3" << std::endl; استراحة؛ الافتراضي: std::cout << "اختيار غير صالح" << std::endl; } العودة 0؛ }

من خلال وضع الحالة الأكثر احتمالا أولا، سيصل المترجم إليها بشكل أسرع، مما يقلل من وقت التنفيذ الإجمالي.

4. فكر في استخدام التعداد

إذا كنت تستخدم قيمًا صحيحة في بيان التبديل الخاص بك، ففكر في استخدامالتعدادبدلاً من. انالتعداد(التعداد) هو نوع بيانات محدد من قبل المستخدم يتكون من مجموعة من الثوابت المسماة.

#include <iostream> enum Color { RED, GREEN, BLUE }; int main() { Color myColor = GREEN; التبديل (myColor) { الحالة الأحمر: std::cout << "اللون أحمر" << std::endl; استراحة؛ الحالة الخضراء: std::cout << "اللون أخضر" << std::endl; استراحة؛ الحالة الزرقاء: std::cout << "اللون أزرق" << std::endl; استراحة؛ الافتراضي: std::cout << "لون غير صالح" << std::endl; } العودة 0؛ }

باستخدامالتعداديجعل التعليمات البرمجية الخاصة بك أكثر قابلية للقراءة والصيانة. يمكن للمترجم أيضًا تحسين بيان التبديل بشكل أفضل لأنه يعرف أن القيم المحتملة مقيدة بـالتعدادأعضاء.

5. الملف الشخصي والتحسين

وأخيرًا، لا تنسَ إدخال الرمز الخاص بك. يمكن أن تساعدك أدوات إنشاء الملفات في تحديد الأجزاء التي تستغرق أكبر قدر من الوقت في بيان التبديل الخاص بك. بمجرد معرفة مكان الاختناقات، يمكنك تطبيق تقنيات التحسين المناسبة.

هناك العديد من أدوات ملفات التعريف المتاحة لـ C++، مثل gprof في بيئة Linux. من خلال تشغيل برنامجك باستخدام ملف التعريف، يمكنك معرفة عدد المرات التي يتم فيها تنفيذ كل حالة في بيان التبديل وكم من الوقت يستغرقه.

بشكل عام، إن جعل بيان التبديل في لغة C++ أكثر كفاءة يعني أن تكون ذكيًا في استخدام التعليمات البرمجية الخاصة بك. سواء أكان الأمر يتعلق بتقليل المقارنات، أو استخدام جداول البحث، أو ترتيب الحالات بحكمة، أو الاستفادة من التعدادات، فإن كل أسلوب يمكن أن يساهم في تحسينات كبيرة في السرعة.

Automotive General Power Switch bestMiniature Roker Switch best

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

مراجع:

  • "لغة البرمجة C++" بقلم بيارن ستروستروب
  • وثائق وبرامج تعليمية لـ C++ عبر الإنترنت
إرسال التحقيق