"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا لا `std :: vector :: reference` إرجاع" bool & `؟

لماذا لا `std :: vector :: reference` إرجاع" bool & `؟

نشر في 2025-03-11
تصفح:866

Why Doesn't `std::vector::reference` Return a `bool&`?

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

السبب

يتم ذلك لتحسين الأداء باستخدام تمثيل صغير للقيم المنطقية. المكتبة:

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

بنية أ { void foo () {} } ؛ قالب void calliftoggled (char v1 ، char & v2 ، t & t) { إذا (v1! = v2) { v2 = v1 ؛ T.foo () ؛ } } int main () { std :: vector v = {false ، true ، false} ؛ const char f = false ؛ أ ؛ calliftoggled (f ، v [0] ، a) ؛ calliftoggled (f ، v [1] ، a) ؛ calliftoggled (f ، v [2] ، a) ؛ }

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3