• 0
ahmed_youssef

حاويات من جوجل تحفظ الوقت والذاكرة

سؤال

https://code.google.com/p/cpp-btree/

 

تستخدم BTree بدلا من RedBlackTree المستخدمة في STL

 

 

http://google-opensource.blogspot.in/2013/01/c-containers-that-save-memory-and-time.html

تم تعديل بواسطه ahmed_youssef
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

جزاك الله خيراً، لدي سؤال:

 

Unlike the standard container types, insertions and deletions invalidate outstanding iterators

 

ألا يحدث هذا في الـSTL Containers أيضاً؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

على حدعلمي، فال Invalidation لل Iterator تختلف من عملية لأخرى ، وكذلك بحسب الحاوية. بعكس ماتذكره google أنها في "جميع" العمليات سيحصل Invalidation

 

إذا مخطئ ياريت أحد يصححلي :)

تم تعديل بواسطه ahmed_youssef
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

http://stackoverflow.com/questions/6438086/iterator-invalidation-rules

 

يبدو أنني كنت مخطئاً، الـinvalidation يحصل في حاويات أخرى كـvector. أما الـmap والـset فلا يحدث فيها.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يبدو أنني كنت مخطئاً، الـinvalidation يحصل في حاويات أخرى كـvector. أما الـmap والـset فلا يحدث فيها.

 

أخي لاحظ أنه في حالة أي عملية تقوم بتعديل الشجرة, في حالة الـ Containers الجديدة من Google فإن الـ Iterators تعتبر غير صالحة بعد تلك العملية. السبب بسيط, هو أن كل Node في الـ B-Tree تحمل أكثر من قيمة و بالتالي فإنه من غير الممكن (عملياً) تحديد أي Node تم تعديلها و بالتالي أي مجموعة قيمة تم تعديلها و بالتالي لا يمكن ضمان صلاحية الـ Iterators بعد هكذا عملية.

 

هناك مكتبة من Boost من أحد مؤسسيها في الحقيقة تقترح إضافة B-Tree Containers و لكن للـ Disk-Based و لكن لم يتم ضمها بعد, يمكنك الاطلاع عليها من هنا: https://github.com/Beman/Boost-Btree

 

تحياتي...

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .