J'ai une question. Ce qui est le mieux de le faire. Ce que je cherche essentiellement, c'est comment ces deux méthodes sont-elles différentes? Si je dois utiliser l'un de ceux que je devrais choisir et pourquoi?Modèles C++: Demande de savoir quel est le meilleur moyen d'utiliser et pourquoi
Répondre
J'irais pour la seconde sauf si foo()
est extrêmement critique, car je pense que c'est plus clair.
En ce qui concerne les différences:
Le premier sera compilé dans différentes versions pour différentes valeurs Number
. Cela peut permettre au compilateur de faire plus d'optimisations en fonction de l'utilisation de num
.
La seconde aura seulement des versions différentes pour différents T
, et sélectionnera pour différents num
au moment de l'exécution.
La première peut être légèrement plus rapide, mais la seconde génère moins de code (ce qui peut être plus rapide en fonction de la pression de la mémoire).
Cela dépend vraiment de ce que vous voulez faire. Si la valeur num
est un paramètre de modèle, elle doit être spécifiée lors de la compilation. S'il s'agit d'un paramètre de fonction, il peut être spécifié lors de l'exécution.
Quel est votre cas d'utilisation?
Voici un problème de propreté de code que vous voulez connaître. Supposons qu'un utilisateur entre l'option. Vous avez donc une variable Number x
qui peut être One
ou Two
. Si vous voulez appeler foo()
, vous devez faire ...
if (x == One)
foo<const char *, One>("asd");
else
foo<const char *, Two>("asd");
alors que, si vous avez utilisé la méthode alternative (votre numéro de suggestion deux), vous pouvez simplement faire:
foo<const char *>("asd", x);
Maintenant, si dans cette fonction, il serait très bénéfique d'avoir ces branches possibles optimisées, alors assurez-vous. Mais sinon, je pense que tu ne fais que rendre la vie difficile pour toi-même.
Aussi, sur la façon dont ces méthodes sont différentes. Dans le code que j'ai écrit ci-dessus, j'ai référencé trois fonctions différentes. Dans le dernier, où il n'y a qu'un seul paramètre de modèle, le code généré pour cette fonction inclura les deux chemins de code, quand num == One
et quand num == Two
. Les deux premières méthodes basées sur des modèles, cependant, auront été capables d'enlever ces branches. Il peut le faire car il va construire deux chemins de code différents en mémoire, un pour chaque cas.
- 1. Quel est le meilleur moyen de faire throbber en C#?
- 2. Quel est le meilleur moyen de communiquer avec la base de données dans Android et pourquoi?
- 3. Quel est le meilleur moyen de structurer sémantiquement une FAQ?
- 4. Quel est le meilleur moyen de lier les données tabulaires
- 5. Quel est le meilleur moyen de renvoyer plusieurs valeurs enum? (Java et C#)
- 6. Quel est le meilleur moyen d'exécuter mes méthodes de test?
- 7. Quel est le meilleur cadre ORM et pourquoi?
- 8. mysql_fetch_object() ou mysql_fetch_array() quel est le meilleur et pourquoi?
- 9. Quel est le meilleur moyen (le plus simple) de transférer des données en C/C++?
- 10. Quel est le meilleur moyen d'afficher un menu déroulant?
- 11. Quel est le meilleur moyen de comparer plusieurs propriétés javabéennes?
- 12. Quel est le meilleur moyen de développer une DLL C++ non managée pour Win32 et WinCE?
- 13. Quel est le meilleur moyen de communication interprocesseur sous Linux?
- 14. Quel est le meilleur moyen de gérer QUERY_STRING en PHP?
- 15. Cocoa - Quel est le meilleur moyen de modifier NSOutlineView
- 16. Quel est le meilleur moyen de redimensionner un objet BitmapData?
- 17. Quel est le meilleur moyen de développer javascript?
- 18. Quel est le meilleur moyen de fermer un thread WCF?
- 19. Quel est le meilleur moyen de lire l'audio via Qt?
- 20. Quel est le meilleur moyen de sécuriser un webservice?
- 21. Quel est le meilleur moyen de déployer des applications Web?
- 22. Quel est le moyen le plus propre et le meilleur pour changer de vue?
- 23. Quel est le meilleur moyen de copier une liste?
- 24. Quel est le meilleur moyen de créer des propriétés dérivées?
- 25. Quel est le meilleur moyen de restaurer une transaction .net?
- 26. En C#, quel est le meilleur moyen de déterminer si une base de données est opérationnelle?
- 27. Quel est le meilleur moyen de savoir si le code est en cours d'exécution dans un flux de travail?
- 28. Quel est le meilleur moyen d'afficher des commentaires dans ASP.NET?
- 29. Quel est le meilleur moyen de copier récursivement le contenu en C#?
- 30. quel est le meilleur moyen d'écrire une fonction php mysql?