2017-08-17 3 views
-3

L'utilisation de modèles est-elle meilleure que celle des types de données de base en termes d'allocation et de gestion de la mémoire?Mémoire efficace: Modèles vs types de données de base

+1

Est-ce une question C++? – doctorlove

+0

ce serait bien si elle peut être liée à C++ ou à swift. @doctorlove –

+1

les templates n'allouent pas de mémoire, seulement si vous l'instanciez, mais alors on ne sait pas en quoi cela est différent des "types de base" – user463035818

Répondre

2

Juste en bref:

modèles - une façon d'écrire du code une fois d'une manière générique, et temps de compilation le compilateur génère du code selon le modèle, si vous avez utilisé le code templatic.

exemple:

#include <iostream> 


template<typename T> 
T MultiplyByFive(T _val) 
{ 
    return _val * 5; 
} 

int main() 
{ 
    std::cout << MultiplyByFive(5) << " " << MultiplyByFive(5.5) << std::endl; 
    return 0; 
} 

Dans cet exemple, le compilateur génère deux fonctions MultiplyByFive. Un pour l'entier et un pour le double. La sortie sera donc:

25 27.5 

C'est parce que ces fonctions ont été appelées. Maintenant, nous avons deux fonctions dans le code (généré par le compilateur)

int MultiplyByFive(int _val) 
{ 
    return _val * 5; 
} 


double MultiplyByFive(double _val) 
{ 
    return _val * 5; 
} 

Nous ne code pas directement, mais le compilateur fait selon notre modèle .

L'allocation de mémoire a peu à voir avec le modèle. L'allocation de mémoire dynamique est déterminée en durée d'exécution (en C++ par le nouvel opérateur). Les variables statiques et locales sont déterminées au moment de la compilation, mais cela n'a rien à voir avec générant le code.

Si je n'ai pas compris la question, vous êtes plus que bienvenus pour clarifier.

+0

Wow! J'étais curieux, que si nous appliquons des modèles/génériques à nos fonctions plutôt que n'importe quel type de données spécifique. Lequel est recommandé en termes d'allocation et de gestion de la mémoire. –

+1

Je ne suis pas sûr de comprendre. L'allocation concerne les DONNÉES. Les modèles concernent le CODE, les fonctions, etc. Vous pouvez utiliser des modèles pour manipuler des données, mais c'est généralement pour montrer que vous le pouvez. À quoi pensez-vous? donner un exemple –

+0

vous avez effectivement effacé mon doute. : D Merci mon pote. J'aurais aimé pouvoir donner un vote positif à votre réponse. –