আপনার যদি ঘন ঘন কোনও অনুক্রমের 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
পরিবর্তে কেন ব্যবহার করবেন না ?