Avatar ·

C++ में std::distance के इटरेटर घटाने पर क्या फायदे हैं?

नमस्ते साथियों! मैंने हाल ही में C++ सीखना शुरू किया है और इटरेटर के साथ काम करते समय एक दिलचस्प बात देखी। मान लीजिए, मेरे पास std::vector v = {10, 20, 30, 40, 50}; है और मैं दो इटरेटर के बीच की दूरी जानना चाहता हूं, जैसे शुरुआत से मध्य तक। मुझे पता है कि random access iterators (जैसे vector के) के लिए एक इटरेटर को दूसरे से घटाया जा सकता है: auto mid = v.begin() + 2; ptrdiff_t dist = mid - v.begin(); // dist = 2. यह काम करता है और बहुत सरल लगता है। लेकिन अन्य डेवलपर्स के कोड में मैं अक्सर std::distance का उपयोग देखता हूं: auto dist = std::distance(v.begin(), mid);. और मुझे समझ नहीं आता कि अगर सीधे घटाया जा सकता है तो फंक्शन का उपयोग क्यों करें? आखिर घटाना छोटा है और शायद तेज भी हो? मैं समझता हूं कि std::distance हेडर से एक template function है। लेकिन