यदि आपको अक्सर किसी अनुक्रम के Nth तत्व तक पहुंचने की आवश्यकता होती है std::list, जिसे एक दोहरी लिंक की गई सूची के रूप में कार्यान्वित किया जाता है, तो शायद सही विकल्प नहीं है। std::vectorया std::dequeबेहतर होगा।
उस ने कहा, आप Nth तत्व का उपयोग करके एक पुनरावृत्ति प्राप्त कर सकते हैं std::advance:
std::list<Object> l;
// add elements to list 'l'...
unsigned N = /* index of the element you want to retrieve */;
if (l.size() > N)
{
std::list<Object>::iterator it = l.begin();
std::advance(it, N);
// 'it' points to the element at index 'N'
}
एक कंटेनर के लिए जो रैंडम एक्सेस प्रदान नहीं करता है, जैसे std::list, पुनरावृत्त समय पर std::advanceकॉल । वैकल्पिक रूप से, यदि आपका मानक पुस्तकालय कार्यान्वयन इसे प्रदान करता है, तो आप कॉल कर सकते हैं :operator++Nstd::next
if (l.size() > N)
{
std::list<Object>::iterator it = std::next(l.begin(), N);
}
std::nextप्रभावी ढंग से एक कॉल को लपेटता है std::advance, जिससे Nकोड की कम लाइनों और कम उत्परिवर्तनीय चर के साथ एक पुनरावृत्त समय को आगे बढ़ाना आसान हो जाता है । std::nextC ++ 11 में जोड़ा गया था।
vectorइसके बजाय आप इसका उपयोग क्यों नहीं करते ?