C şablon şablon parametreleri bazı kullanım alanları nelerdir ?
C şablon şablon parametreleri (parametre olarak kabul şablonlar şablonlar) Politika tabanlı kullanarak bazı örnekler sınıf tasarım gördüm. Diğer kullanır bu tekniği nedir?
CEVAP
Şablon şablon sözdizimini şablonu bu gibi başka bir şablon üzerinde bağımlı olan bir parametre geçmek için kullanmanız gerekir bence
template <template<class> class H, class S>
void f(const H<S> &value) {
}
Burada, H
şablonu esas alan bir tip, ama bu işlevi H
tüm uzmanlık halletmek istedim.
NOTDaha önce c programlama yaptım ve sadece bir kere ihtiyaç var. Nadiren gerekli bir özellik (bu gerekiyor! tabii ki) çok kullanışlı buluyorum.
İyi örnekleri düşünmeye çalışıyorum, ve bu gerekli değil, ama en dürüst olmak gerekirse, böyle bir tedbir bir örnek. Hadi std::vector
gibiyoktypedef value_type
var.
Nasıl vektör öğeleri için doğru türde değişkenleri oluşturmak için bir işlevi yazmak ister misin? Bu işe yarar.
template <template<class, class> class V, class T, class A>
void f(V<T, A> &v) {
// This can be "typename V<T, A>::value_type",
// but we are pretending we don't have it
T temp = v.back();
v.pop_back();
// Do some work on temp
std::cout << temp << std::endl;
}
NOT: std::vector
iki şablon parametreleri, türü ve ayırıcı vardır, ikisini de kabul etmek zorunda kaldık. Neyse ki, tip kesintisi nedeniyle, tam türünü açıkça yazmak gerek kalmayacak.
bu gibi kullanabilirsiniz:
f<std::vector, int>(v); // v is of type std::vector<int> using any allocator
ya da daha iyisi, sadece kullanabilirsiniz:
f(v); // everything is deduced, f can deal with a vector of any type!
GÜNCELLEMEHatta bu yapmacık örnek, açıklayıcı olsa da, artık şaşırtıcı bir örnek c 11 auto
tanıtımı nedeniyle. Şimdi aynı fonksiyonu olarak yazılabilir:
template <class Cont>
void f(Cont &v) {
auto temp = v.back();
v.pop_back();
// Do some work on temp
std::cout << temp << std::endl;
}
bu tür bir kod yazmayı tercih ederim.
Verim ana kullanım alanları nelerdir v...
Uygulamada, yeni "" verim; Py...
Tip şablon parametreleri...
ES6 WeakMap asıl kullanım alanları nel...
C belirtilen şablon parametreleri'...