Avatar ·

قواعد إبطال المؤشرات في C++: متى تصبح المؤشرات غير صالحة؟

مرحباً بالجميع! بدأت تعلم لغة C++ وأكتب برنامجاً صغيراً لمعالجة قائمة الطلبات. أستخدم `std::vector`. إليك الكود المبسط: ```cpp #include #include int main() { std::vector orders = {101, 102, 103, 104, 105}; // نبحث عن الطلب 103 ونحذفه for (auto it = orders.begin(); it != orders.end(); ++it) { if (*it == 103) { orders.erase(it); // <-- هنا أحذف العنصر } } // نعرض الطلبات المتبقية for (int order : orders) { std::cout << order << " "; } return 0; } ``` في Visual Studio 2022، يتعطل هذا الكود أحياناً مع خطأ، وأحياناً ينتج أرقاماً غريبة. قرأت أن هذا مرتبط بـ "إبطال المؤشرات"، لكنني لا أفهم تماماً ما يعنيه ذلك. أسئلتي: 1. لماذا يتعطل الكود الخاص بي؟ 2. ما هي العمليات على الحاويات التي تجعل المؤشرات غير صالحة؟ 3. كيف يمكن حذف العناصر بشكل صحيح أثناء التكرار؟ سأكون ممتناً لشرح مفصل مع أمثلة. أستخدم