J'essaie de faire une analyse d'ADN en C++. J'ai un tableau 2D de caractères contenant des séquences d'ADN. Maintenant, basé sur le modèle d'ADN, je fais un peu de traitement sur le tableau d'entrée et trouve une nouvelle séquence pour ce modèle.Réorganisation d'un tableau 2D
Disons que la séquence d'origine était 1,2,3,4,5,6
. Ce sont les 6 ADN (rangées du tableau 2D)
Après traitement, je reçois la commande sous 1,6,2,4,3,5
. Ensuite, comment réorganiser le tableau d'entrée d'origine selon cette séquence. Autrement dit, la première rangée d'entrée devrait maintenant avoir le 1er ADN, la 2e rangée devrait maintenant avoir l'ADN qui était sixième dans le tableau original et ainsi de suite. Des idées pour changer les adresses dans la mémoire afin de réorganiser le tableau d'origine?
C++ offre des classes de collection ordonnées qui sont beaucoup plus flexibles que la construction matricielle de bas niveau. Y at-il une raison spécifique pour laquelle vous n'utilisez pas 'vector' ou similaire? http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html – HostileFork
Eh bien, c'est une partie d'un code d'environ 50k lignes. J'ai donc besoin de faire des changements dans le tableau original lui-même. En fait, j'ai besoin de passer ce tableau re ordered à un autre algorithme pour le traitement. –
Ce que je demande est pourquoi ne pas avoir chacune de vos lignes stockées en tant qu'objet (disons, 'classe DnaSequence') ... alors avoir un vecteur de pointeurs vers ces objets. Votre réorganisation aurait alors simplement réorganiser les pointeurs, et il serait capable de le faire rapidement même si les séquences d'ADN étaient longues. Soit dit en passant, si vous êtes hyper-préoccupé par l'espace de stockage des éléments radix 4 (ou même si vous avez d'autres états comme "unknown"), vous pourriez trouver ma bibliothèque Nstate intéressante: http://hostilefork.com/nstate/ – HostileFork