single
Kuinka käyttää mallin erikoistamista
Pyyhkäise näyttääksesi valikon
Mallin erikoistamisen syntaksi
Jotta ymmärtäisimme, miten mallin erikoistaminen toimii, meidän täytyy ensin hahmottaa, mitä tapahtuu, kun mallia kutsutaan tietyllä tietotyypillä.
Kun kutsut mallifunktiota tietyllä tyypillä, kääntäjä luo konkreettisen instanssin mallista kyseiselle tyypille. Tätä prosessia kutsutaan mallin instansioinniksi. Käytännössä kääntäjä korvaa malliparametrin annetulla tyypillä ja luo erikoistetun version funktiosta.
main.cpp
12345678910111213141516#include <iostream> template<typename T> T TemplateFunction(T value) { return value; } // You can imagine the generated function to look something like this // template<> // int TemplateFunction<int>(int value) { return value; } int main() { // When the compiler encounters this line // It generates a function for the specified type // VVV TemplateFunction<int>(5); }
Mutta ensin kääntäjä tarkistaa, onko tälle funktiolle jo olemassa korvaavaa toteutusta. Ei ole järkevää luoda useita instansseja samasta funktiosta, jos sitä kutsutaan toistuvasti samalla tyypillä. Tämän tiedon avulla voimme hyödyntää tätä tarkoituksiimme.
main.cpp
123456789101112131415161718192021#include <iostream> // Primary template template<typename T> T TemplateFunction(T value) { std::cout << "Generic template\n"; return value; } // Template specialization for int template<> int TemplateFunction<int>(int value) { std::cout << "Specialized template for int\n"; return value * 2; // custom behavior } int main() { TemplateFunction<double>(3.14); // uses generic template TemplateFunction<int>(5); // uses specialized version }
Pyyhkäise aloittaaksesi koodauksen
Luo erikoistettu toteutus TemplateFunction-mallille, joka käsittelee std::string-tietotyyppejä.
- Toteuta erikoistettu versio
TemplateFunction-mallista, joka käsitteleestd::string-parametreja eri tavalla. - Varmista, että kaikki parametrina annetut merkkijonot palautetaan siten, että niiden alkuun lisätään
"Specialized: ".
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme