C ++ سلوك قائمة مرتبطة
-
23-09-2019 - |
سؤال
لدي بعض رمز C ، حيث يوجد في قائمتين مرتبطتين (على سبيل المثال A و B) ويتم إدراج A في وضع معين في B و A لا يزال لديه عناصر.
كيف يمكنني محاكاة نفس السلوك بشكل فعال باستخدام C ++ STL؟ إذا حاولت لصق ، فإنه يجعل الثاني فارغًا.
شكرا ، جوكول.
المحلول
تحتاج إلى نسخ العناصر. النظر في شيء مثل هذا:
std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));
إذا كنت تريد نفس العقد التي تتقاسمها قائمتين ، فهذا ببساطة غير مدعوم من قبل std::list
(حاويات STL لها دائمًا ملكية حصرية). يمكنك تجنب تكرار العناصر عن طريق تخزين المؤشرات في القائمة ، أو باستخدام boost::ptr_list
, ، التي تخزن داخليًا المؤشرات ولكنها تقدم واجهة برمجة تطبيقات أجمل.
نصائح أخرى
حاول الإدراج:
B.insert( position, A.begin(), A.end() );
لإدراج نسخ من عناصر A في B قبل "الموقف". يبقى نفسه دون تغيير. انظر الى هذا حلقة الوصل
لا تنتمي إلى StackOverflow