vecteur de char, c'est bien parce que la mémoire est contiguious. Par conséquent, vous pouvez l'utiliser avec beaucoup de C de l'API comme berkeley ou de sockets Api de fichier. Vous pouvez effectuer les opérations suivantes, par exemple:
std::vector<char> vect;
...
send(sock, &vect[0], vect.size());
et il fonctionne parfaitement.
Vous pouvez le traiter comme n'importe quel autre allouée dynamiquement char tampon. Vous pouvez rechercher vers le haut et vers le bas à la recherche pour les numéros de magie ou des modèles. Vous pouvez analyser partiellement en place. Pour la réception à partir d'une prise, vous pouvez très facilement redimensionner pour ajouter encore plus de données.
L'inconvénient est le redimensionnement n'est pas terriblement efficace (redimensionner ou préallouer avec prudence) et de la suppression de l'avant de la matrice sera également très ineficient. Si vous avez besoin, par exemple, de la pop un ou deux caractères à la fois sur le devant de la structure de données très fréquemment, la copie d'un deque avant ce traitement peut être une option. Cela vous coûte une copie et deque la mémoire n'est pas contiguë, de sorte que vous ne pouvez pas simplement passer un pointeur vers un C API.
Ligne de fond, en apprendre davantage sur les structures de données et leurs compromis avant de plonger, cependant vecteur de char est typiquement ce que je vois utilisées dans la pratique générale.