Salut,
Si j'ai bien compris le principe de l'ADN (ce qui reste encore à démontrer, vu que je suis informaticien, et non biologiste
), le nucélotide est systématiquement composés de quatre éléments représentés par les lettre C G A et T (et autre combinaisons possibles), et tu as une série de nucélotides qui se suivent pour représenter une "séquence ADN"(merci wikipedia
).
Hé bien, le plus facile est sans doute de créer deux types de donnée bien distincts : un type de donnée permettant de représenter la notion de nucléotide et un type de donnée permettant de représenter... une séquence d'ADN.
Ceci dit, je dis qu'il faut créer des types de données, mais le seul but recherché est de permettre au développeur de savoir s'il est occupé à travailler sur... ce qui représente un nucléotide ou sur ce qui représente une séquence ADN! On n'est donc pas forcément obligé d'aller très loin dans la définition de ces types et, en l'occurrence, des alias de type pourraient très bien faire l'affaire
(enfin, dans un premier temps du moins).
Ainsi, la notion de nucléotide, vu quelle doit être représentée par quatre lettres, pourrait très bien prendre la forme de
using Nucleotide = std::array<char, 4>;
(Attention: C++11 obligatoire
)
Quant à la notion de "séquence d'ADN", elle pourrait tout aussi bien prendre la forme de
using AdnSequence = std::vector<Nucleotide>;
.
La seule chose, c'est que la notion de tableau (comme celle représentée par la classe std::vector) est particulièrement rapide lorsqu'il s'agit d'accéder aux différents éléments qu'elle contient, mais... d'une lenteur crasse lorsqu'il s'agit d'augmenter le nombre d'éléments qu'elle est capable de contenir. Si bien que l'idéal est généralement de faire en sorte que std::vector demande directement "assez de mémoire" que pour être en mesure de contenir l'ensemble des éléments que nous nous apprêtons à lui donner.
PS : je confirme ce que bousk dit : un char pour représenter les valeurs de C, G, T et A est largement suffisant, et prendra surement moins de place en mémoire que d'utiliser n'importe quel type "entier" 
En outre, il serait éventuellement possible de faire encore mieux du point de vue de l'utilisation de la mémoire en essayant de faire en sorte d'utiliser systématiquement deux bits pour chaque lettre. Mais, à moins d'avoir la preuve que l'utilisation d'un char pour représenter un des éléments du nucléotide ne représente déjà une "utilisation trop importante de la mémoire", je crois qu'il serait particulièrement masochiste d'essayer de faire autrement
Partager