Je trie un grand vecteur contenant des structures en utilisant heapsort et l'exécution de mon code est assez lente. Au lieu de stocker une structure dans le vecteur, je veux stocker un pointeur sur la structure maintenant. Ma question est, sous le capot, ce qui se passe réellement quand je trie les choses et serait-il plus rapide si je stocke un pointeur sur une structure plutôt que de stocker la structure elle-même?Tri d'un vecteur contenant un pointeur vers Struct VS Struct
0
A
Répondre
0
Certainement oui. Le stockage d'objets en tant que valeurs dans des conteneurs stl entraînera l'exécution du constructeur de copie de l'objet stocké.
En général, pour les performances, il est préférable de stocker des pointeurs à la place. Cependant, vous devrez être plus prudent au sujet des fuites et de la sécurité des exceptions une fois que vous utilisez des pointeurs à la place.
Quoi qu'il en soit, la chose la plus simple qui se passe sur le tri est l'algorithme d'échange. Qui implique la construction de copie:
void swap(T & a, T & b)
{
T c = a; // copy constructing
a = b; // copy constructing
b = c; // copy constructing
}
Il est certainement beaucoup plus rapide de copier le pointeur au lieu d'objets plus gros.
Questions connexes
- 1. Pointeur vers structures contenant struct
- 2. C - Chargement d'une struct contenant un pointeur vers un pointeur
- 3. double pointeur vers struct dans struct
- 4. un vecteur de tri de struct
- 5. Initialiser un vecteur dans un vecteur struct
- 6. Passage d'un pointeur struct struct to cuda
- 7. Passer le pointeur structure vs passer struct
- 8. struct C++ tri
- 9. Pointeur COM sur struct
- 10. pointeur sur struct dans les struct imbriquées
- 11. Struct avec pointeur vers une fonction
- 12. Initialiser éléments d'un pointeur vers une struct
- 13. pointeur sur struct dans struct in c
- 14. pointeur vers une struct, passé par référence
- 15. Conversion C++ struct pointeur vers C#
- 16. Comment initialiser un tableau de struct ayant un pointeur vers un tableau de struct?
- 17. De retour un pointeur struct
- 18. Anonyme Struct pointeur
- 19. Définition du pointeur struct
- 20. Constant pointeur/struct
- 21. Erreurs de pointeur Struct
- 22. manipulation de pointeur struct
- 23. dereferencing pointeur vers un type incomplet avec struct ip et aussi avec struct iphdr
- 24. Pointeurs vers struct et cast
- 25. Affectation mémoire à un pointeur sur struct
- 26. Struct avec un pointeur vers son propre type dans ctypes
- 27. l'accès aux tableaux dans un pointeur vers une struct
- 28. Nullable struct vs class
- 29. pointeur sur struct - quelques questions
- 30. struct vs class
Cela peut dépendre du langage, du compilateur et de l'environnement d'exécution, mais en général, le tri est implémenté via une série de swaps. L'échange de pointeurs est généralement très bon marché, alors que le swapping (grand ou complexe) peut être assez coûteux. La vraie réponse à votre question est d'essayer les deux et de mesurer le résultat. – Mankarse