سؤال

كيف يمكنني إنشاء std::list مع عدد العناصر الثابتة؟

هل كانت مفيدة؟

المحلول

#include <list>

// list with 5 elements, using default constructor
const size_t fixedListSize(5);
std::list<int> mylist(fixedListSize);  

إذا كنت تريد أن يكون لها دائمًا 5 عناصر بالضبط ، فيجب عليك لفها في فصل واجهة لمنع الإدراج والمحو.

إذا كان هذا بالفعل ما تريده ، فستكون أفضل حالًا في استخدام حاوية مختلفة بدلاً من list, ، بما أنه مذكور في الردود الأخرى ، فإنك تخفي الميزات الأكثر فائدة لـ list.

نصائح أخرى

إذا كنت تريد فقط حاوية ثابتة الحجم ، فربما تبحث عنها std::tr1::array. (أو فقط std::array لـ C ++ 0x.)

إذا لم تقم بإدراج العناصر أو تزيلها ، فلا أعتقد أن هناك أي ميزة في استخدامها std::list بدلاً من std::array أو std::vector.

يجب أن تستخدم std::list البناء.

explicit list (size_type n, const T& value = T(), const Allocator& = Allocator());

فقط حدد في وقت الخلق العدد الدقيق للعناصر.

std::list<int> someList(20);

يمكنك تحديد القيمة الأولية لكل عنصر أيضًا.

std::list<int> someList(20, int(42));

STD :: LIST :: تغيير الحجم هو الحل الصحيح أيضا.

أود أن أسألك ، لماذا تريد أن يكون لها عدد ثابت من العناصر ولماذا تستخدم قائمة؟

قد يكون المستخدم يقوم بتنفيذ ذاكرة التخزين المؤقت مع عدد محدود من العناصر وسياسة LRU للإزالة. في هذه الحالة ، تعد القائمة مجموعة جيدة للاستخدام. في أي وقت يتم فيه الوصول إلى عنصر ، تقوم بصق هذا العنصر إلى مقدمة القائمة. إذا كنت بحاجة إلى إدراج elemenet جديد (بحيث تصبح القائمة ممتلئة) ، فأنت تنبثق من الجزء الخلفي من القائمة.

يمكنك أيضًا الحفاظ على نوع من البحث عن العناصر ولكن القائمة STD :: هي أفضل فئة للتعامل مع LRU.

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