এখানে বেশিরভাগ উত্তর একটি গুরুত্বপূর্ণ বিবরণ মিস করে: কিসের জন্য?
আপনি পাত্রে কী রাখতে চান?
যদি এটি int
গুলি এর সংকলন হয় তবে std::list
প্রতিটি দৃশ্যে হেরে যাবে, আপনি যদি পুনর্বিবেচনা করতে পারেন তবে তা আপনি কেবল সামনে থেকে সরিয়ে ফেলুন ইত্যাদি ists তালিকাগুলি ধীরে ধীরে ধীরে ধীরে হয়, প্রতিটি সন্নিবেশ আপনাকে বরাদ্দকারীর সাথে ইন্টারঅ্যাকশন ব্যয় করে। এটি উদাহরণস্বরূপ প্রস্তুত করা অত্যন্ত কঠিন হবে, যেখানে list<int>
মারধর করে vector<int>
। এবং তারপরেও, আরও deque<int>
ভাল বা ঘনিষ্ঠ হতে পারে, তালিকাগুলি ব্যবহারে সন্ধান না করা, যার মেমরির ওভারহেড বেশি থাকবে।
তবে, যদি আপনি ডেটাগুলির বৃহত, কুরুচিপূর্ণ ব্লবগুলি নিয়ে কাজ করে থাকেন - এবং এর মধ্যে কয়েকটি - আপনি সন্নিবেশ করানোর সময় সামগ্রিকভাবে গড়তে চান না, এবং পুনর্নির্মাণের কারণে অনুলিপি করা একটি বিপর্যয় হতে পারে - তবে আপনি সম্ভবত এটির সাথে আরও ভাল হতে পারেন may list<UglyBlob>
চেয়ে vector<UglyBlob>
।
তবুও, আপনি যদি আবারও স্যুইচ করেন vector<UglyBlob*>
বা vector<shared_ptr<UglyBlob> >
আবারও - তালিকাটি পিছনে থাকবে।
সুতরাং, অ্যাক্সেস প্যাটার্ন, লক্ষ্য উপাদান গণনা ইত্যাদি এখনও তুলনাটিকে প্রভাবিত করে, তবে আমার মতে - উপাদানগুলির আকার - অনুলিপি করার ব্যয় ইত্যাদি affects