Avatar ·

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

नमस्ते साथियों! मैंने हाल ही में C++ सीखना शुरू किया है और इटरेटर के साथ काम करते समय एक दिलचस्प बात देखी। मान लीजिए मेरे पास std::vector v = {10, 20, 30, 40, 50}; है और मैं दो इटरेटर के बीच की दूरी जानना चाहता हूं, जैसे शुरुआत से मध्य तक। मुझे पता है कि random-access इटरेटर (जैसे 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 है। लेकिन