यदि आपको अक्सर किसी अनुक्रम के 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++
N
std::next
if (l.size() > N)
{
std::list<Object>::iterator it = std::next(l.begin(), N);
}
std::next
प्रभावी ढंग से एक कॉल को लपेटता है std::advance
, जिससे N
कोड की कम लाइनों और कम उत्परिवर्तनीय चर के साथ एक पुनरावृत्त समय को आगे बढ़ाना आसान हो जाता है । std::next
C ++ 11 में जोड़ा गया था।
vector
इसके बजाय आप इसका उपयोग क्यों नहीं करते ?