Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Kuinka käyttää mallin erikoistamista | Template-erikoistelu
C++-Template-Luokat
Osio 4. Luku 2
single

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

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

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 }
Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Luo erikoistettu toteutus TemplateFunction-mallille, joka käsittelee std::string-tietotyyppejä.

  • Toteuta erikoistettu versio TemplateFunction-mallista, joka käsittelee std::string-parametreja eri tavalla.
  • Varmista, että kaikki parametrina annetut merkkijonot palautetaan siten, että niiden alkuun lisätään "Specialized: ".

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 2
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt