قائمة مرتبطة منفردة في مكتبة C ++ القياسية أو المكتبات الأخرى المستخدمة على نطاق واسع؟
-
25-09-2019 - |
سؤال
يبدو أن هناك قائمة مرتبطة مضاعفة فقط (ولكن لا توجد قائمة مرتبطة منفردة) في مكتبة 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)
لا تنتمي إلى StackOverflow