الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه ahmed_youssef في 3 فبراير 2013 · 4 رد · 1,205 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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 في 3 فبراير 2013 في 16:08

2
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#2

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

 

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

 

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

هذه الجملة خاطئة  :wacko: 


#3

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

 

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

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 4 فبراير 2013 في 12:49

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#4

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

 

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

هذه الجملة خاطئة  :wacko: 


#5
اقتباس

يبدو أنني كنت مخطئاً، الـ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

مواضيع مشابهة