فيديو: Data Structures Summary 2025
إذا كان لديك صفيف وكنت لا تريد تغيير محتوياته، فيمكنك جعله مصفوفة ثابتة. الخطوط التالية من التعليمات البرمجية الموجودة في المثال ARray05، توضح هذا النهج:
كونست إنت بيرماننت [5] = {1، 2، 3، 4، 5}؛ كوت << بيرماننت [1] << إندل؛
تعمل هذه المصفوفة مثل أي صفيف آخر، إلا أنه لا يمكنك تغيير الأرقام داخلها. إذا قمت بإضافة سطر مثل السطر التالي، يمكنك الحصول على خطأ برنامج التحويل البرمجي، لأن المترجم على علم الثوابت:
دائم [2] = 5؛
وإليك الخطأ الذي تحصل عليه عند محاولة هذا في التعليمات البرمجية:: كتل:
خطأ: تعيين موقع للقراءة فقط 'دائم [2]'
ماذا عن مجموعة ثابتة من غير نونكونستانتس؟ هل تستطيع فعل ذلك؟ حسنا، أحيانا - اعتمادا على المترجم. كما الرهيبة مثل التعليمات البرمجية التالية (وجدت في ARray06 سبيل المثال) تبدو - وانها ليست معيار أنسي! - يسمح لك القيام بذلك مع الإصدارات القديمة من المجمعين غك. (ميكروسوفت فيسوال C ++ و بورلاند C ++ منشئ لا تسمح به، و التعليمات البرمجية:: مترجم كتل يعرض لك خطأ: رسالة خطأ تعيين صفيف غير صالح.)
إنت نونكونستانت [5] = {1، 2، 3، 4، 5}؛ إنت أوثرليست [5] = {10، 11، 12، 13، 14}؛ أوثرليست = نونكونستانت؛
وبعبارة أخرى، هذا السطر الثالث يقول: "ننسى ما يشير أوثرليست إلى؛ بدلا من ذلك، جعله يشير إلى الصفيف الأول، {1، 2، 3، 4، 5}! "الآن، أنت حقا لا ينبغي أن يكتب رمز مثل هذا (تذكر، إبقاء الأمور بسيطة ومفهومة)، لذلك إذا كنت ترغب في منع هذا النوع من الشيء، يمكنك جعل ثابت صفيف:
< ! --3 ->كونست إنت نونكونستانت [5] = {1، 2، 3، 4، 5}؛ كونست إنت أوثرليست [5] = {10، 11، 12، 13، 14}؛ أوثرليست = نونكونستانت؛
الآن، عندما يحصل المترجم على السطر الثالث، فإنه يعطيك خطأ:
خطأ: تعيين متغير للقراءة فقط 'أوثرليست'
ولكن قد تلاحظ أن الطريقة التي جعلت ثابت صفيف كان بنفس الطريقة التي جعلت عناصرها ثابتة في التعليمات البرمجية التي جاءت قبل هذا المثال مباشرة. وجه الفتاة! عم كل هذا؟ تبين أن هناك بعض القواعد.
تصف القائمة التالية القواعد بالتفصيل، لجعل صفائف ثابتة:
-
إذا كنت تريد أن تجعل ثابت صفيف، يمكنك أن تسبق نوعها مع كلمة كونست. عند القيام بذلك، يكون اسم الصفيف ثابتا، وتكون العناصر داخل المصفوفة أيضا ثابتة. وبالتالي لا يمكن أن يكون لديك مجموعة ثابتة مع عناصر غير ثابتة، ولا يمكن أن يكون لديك مجموعة غير ثابتة مع عناصر ثابتة.
-
مفهوم مجموعة غير ثابتة موجود فقط في غك وليس معيار أنسي.
إذا كنت تريد حقا الحصول على التقنية، فإن معيار أنسي C ++ يقول أنه عند وضع كلمة كونست أمام بيان صفيف، كنت لا تجعل ثابت صفيف. فإنك تقول أن المصفوفة تحمل ثوابت فقط.
ومع ذلك، عند استخدام كونست بهذه الطريقة، معظم المبرمجين أيضا جعل المصفوفة نفسها ثابتة. ولكن هذا أمر جيد؛ يجب ألا يأخذ الأشخاص اسم صفيف ونسخه إلى شيء آخر. هذا ليس أسلوب البرمجة جيدة، وانها مجرد طلب البق - أو، على الأقل، والارتباك - في وقت لاحق.
