আপনার যদি ঘন ঘন কোনও অনুক্রমের Nth উপাদানটি অ্যাক্সেস করার প্রয়োজন হয় std::list, যা দ্বিগুণ লিঙ্কযুক্ত তালিকা হিসাবে প্রয়োগ করা হয় তবে সম্ভবত সঠিক পছন্দ নয়। std::vectorবা std::dequeসম্ভবত আরও ভাল হবে।
এটি বলেছিল, আপনি Nth উপাদানটি ব্যবহার করে একটি পুনরাবৃত্তি পেতে পারেন std::advance:
std::list<Object> l;
unsigned N = ;
if (l.size() > N)
{
std::list<Object>::iterator it = l.begin();
std::advance(it, N);
}
একটি ধারক যে রেণ্ডম এক্সেস উপলব্ধ করা হয় না জন্য, মত std::list, std::advanceকল operator++পুনরুক্তিকারীর উপর Nবার। বিকল্পভাবে, যদি আপনার স্ট্যান্ডার্ড লাইব্রেরি বাস্তবায়ন এটি সরবরাহ করে তবে আপনি কল করতে পারেন std::next:
if (l.size() > N)
{
std::list<Object>::iterator it = std::next(l.begin(), N);
}
std::nextকার্যকরভাবে একটি কলকে মোড়ানো হয় std::advance, Nকোডের কম লাইন এবং আরও কম পরিবর্তনীয় ভেরিয়েবলের সাহায্যে একটি পুনরাবৃত্তির সময়ের অগ্রগতি সহজ করে তোলে । std::nextসি ++ 11 এ যুক্ত হয়েছিল।
vectorপরিবর্তে কেন ব্যবহার করবেন না ?