قائمة مرتبطة منفردة في مكتبة C ++ القياسية أو المكتبات الأخرى المستخدمة على نطاق واسع؟

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

سؤال

يبدو أن هناك قائمة مرتبطة مضاعفة فقط (ولكن لا توجد قائمة مرتبطة منفردة) في مكتبة C ++ القياسية ، أليس كذلك؟ هل هناك أي مكتبات C ++ المستخدمة على نطاق واسع مع قائمة مرتبطة منفردة؟

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

المحلول

هنالك شهير, ، وهو امتداد SGI (__gnu_cxx::slist)

#include <iostream>
#include <iterator>
#include <ext/slist>

int main(int argc, char** argv) {
  __gnu_cxx::slist<int> sl;
  sl.push_front(1);
  sl.push_front(2);
  sl.push_front(0);
  std::copy(sl.begin(), sl.end(),  // The output is 0 2 1
            std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
  return 0;
}

نصائح أخرى

هنالك ال slist الفصل من Boost وهو تطبيق قائمة مرتبطة بشكل منفرد.

فقط للرجوع اليها...

لقد مر الوقت وجلبنا C ++ 11 STD :: forward_list الحاوية التي يتم تنفيذها كقائمة مرتبطة بشكل منفرد ، ولا تحتوي على أي عام مقارنة بتنفيذها في C.

مقارنة ب std::list توفر هذه الحاوية مساحة تخزين فعالة أكبر عندما لا تكون هناك حاجة إلى التكرار ثنائي الاتجاه.

تحذير: مفقود push_back طريقة (std :: forward_list و std :: forward_list :: push_back)

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