Tag dispatching
temelde doğru aşırı fonksiyonu bulmak için kullanılan bir teknikle verilen bir isimdir. Yani, teknik olarak sadece aşırı yük olmaktan başka bir şey değildir.
Boost sitesinden söylemek gerekirse:
Etiket yollama bir tür özelliklerine göre gönderme aşırı işlevini kullanarak bir yoludur ve genellikle özellikleri sınıfları ile elele kullanılır.
Bunu standart kütüphane algorithm
başlık dosyasına baştan kullanılan görebilirsiniz. Sadece bir örnek uğruna, iki yönlü erişim (list
) sağlayan bir kaptan daha rastgele erişimi sağlayan bir kap üzerinde daha etkili bir şekilde bir çok yapılabilir bir algoritma AlgoX
(örneğin vector
) olduğu düşünün. Yani, algoritma seçilmesi için Gördüğünüz gibi bu kategoriler esasen farklı türleri gibi aşırı operatör örneği başka bir şey değildir, basit bir akla, 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());
}
kullanarak sevk etiketi kullanmak istiyorsunuz iterator type
birine dayanarak. std::rotate
nasıl uygulandığını daha gerçek dünya Örneğin
, dışarı ödeme yapabilirsiniz.
Etiket tabanlı gönderim, – Arunmu