Tag dispatching
मूल रूप से सही ओवरलोडेड फ़ंक्शन खोजने के लिए नियोजित तकनीक को दिया गया नाम है। तो, तकनीकी रूप से यह केवल अधिभार के अलावा कुछ भी नहीं है।
Boost साइट से कहें:
टैग भेजने एक प्रकार के गुणों के आधार प्रेषण करने के लिए अधिक भार फ़ंक्शन का उपयोग करने का एक तरीका है, और अक्सर लक्षण वर्गों के साथ हाथ में हाथ जाता है।
आप इसे मानक पुस्तकालय algorithm
शीर्षलेख फ़ाइल में उपयोग कर सकते हैं। बस एक उदाहरण के लिए, मान लें कि एक एल्गोरिदम AlgoX
है जिसे एक कंटेनर पर बिडरेक्शनल एक्सेस (list
) प्रदान करने वाले कंटेनर से यादृच्छिक पहुंच (जैसे vector
) प्रदान करने वाले कंटेनर पर बहुत अधिक कुशलता से किया जा सकता है। तो, एल्गोरिथ्म के चयन के लिए iterator type
पर आधारित एक सरल मन में iterator_traits
template <typename Iter>
void AlgoXImpl(Iter first, Iter last, bidirectional_iterator_tag) {
//.....Algo specialized to bidirectional iterators
}
template <typename Iter>
void AlgoXImpl(Iter first, Iter last, random_access_iterator_tag) {
//.....Algo specialized to random access iterators
}
template <typename Iter>
void AlgoX(Iter first, Iter last) {
if (first == last) return;
AlgoXImpl(first, last, typename iterator_traits<Iter>::iterator_category());
}
का उपयोग कर भेजने टैग का प्रयोग करेंगे जैसा कि आप देख सकते हैं, यह अधिक भार के रूप में श्रेणियों के अनिवार्य रूप से विभिन्न प्रकार हैं ऑपरेटर का एक उदाहरण है, लेकिन कुछ भी नहीं है।
एक और वास्तविक दुनिया उदाहरण के लिए, आप चेकआउट कर सकते हैं कि कैसे std::rotate
लागू किया गया है।
टैग आधारित प्रेषण – Arunmu