كيف أكتب لحلقة التي بالتكرار عبر CAtlMap حذف عناصر انتقائي لأنه غني؟

StackOverflow https://stackoverflow.com/questions/197121

  •  10-07-2019
  •  | 
  •  

سؤال

وأنا أحاول القيام بما يلي دون الكثير من كود حالة خاصة للتعامل مع المواقف يبطل الخ:

ما هي أفضل طريقة لملء الفراغات؟

void DeleteUnreferencedRecords(CAtlMap<Record>& records)
{
   for(____;____;____)
   {
      if( NotReferencedElsewhere(record) )
      {
        // Delete record
        _______;
      }
   }
}
هل كانت مفيدة؟

المحلول

ووفقا لهذه:

http://msdn.microsoft.com/ أون لنا / مكتبة / 0h4c3zkw (VS.80) .aspx اتصال

وRemoveAtPos ديه هذه دلالات

<اقتباس فقرة>   

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

والمشكلة هي أن النظام يمكن أن يتغير - وهو ما يعني أن GetNext () لن تستمر حقا التكرار. يبدو أنك بحاجة لجمع المواقف التي تريد حذفها في مرور واحد وحذفها في القرن المقبل. إزالة الموقف لا يفسد الكائنات الموقف أخرى

نصائح أخرى

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

وأنا لست على دراية جدا مع CAtlMap، ولكن لو كان مماثلا لنوع map المحكمة الخاصة بلبنان، ثم <وأ href = "https://stackoverflow.com/questions/197121/how-do-i-write-a- للحلقة التي بالتكرار-الإفراط واحد في catlmap-انتقائي-حذف-ايلى # 197209 "> روب" كان يعتقد من قبل " آمنة - حذف عنصر لا يؤثر على أي المكررات ما عدا واحدة (الصورة) لافتا إلى العنصر الذي يتم حذفها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top