Je voudrais sérialiser le vecteur. Et je sais pas comment changer le pointeur de vecteur .. Pour faire simple, disons que j'ai quelque chose de vecteur comme:C++ vector Comment changer le pointeur interne
vector<char> v;
Et je ce pointeur:
char* c = { 'v', 'e', 'c', 't', 'o', 'r' };
et je voudrais pointeur interne de mon vecteur v points char * c:
&v[0] -> c
Comment puis-je régler vecteur qu'il tient à c? Y a-t-il un moyen de le faire?
EDIT 22.10.2010
Alors les gars, après vecteur de débogage je suis venu avec cette solution:
vector<char> dump;
memcpy(&myVector, &dump, sizeof(myVector)); // I change contents so it can work
myVector.assign(buf, buf+5); // copy contents into it from buffer (I don't like this part)
Et pour travailler ce que je devais définir
_ITERATOR_DEBUG_LEVEL=0
parce que c'est initialement mis à 2 et il fait effectivement une vérification de débogage (je suppose) Ce n'est pas défini en mode de libération aussi bien? Donc c'est ma solution de contournement pour l'instant, je voudrais forcer ppl à supprimer le vecteur à long terme ... Alors les gars, que penses-tu de cette solution? Et les dangers que vous voyez?
J'ai réellement besoin de sérialiser le vecteur par memcpy. Je veux sérialiser toute ma classe (comme prendre un instantané de la mémoire) et l'écrire dans un fichier, et lors du rechargement, le lire à partir du fichier et restaurer l'objet sans appeler son constructeur et en utilisant un nouvel opérateur.
Umm ce conteneur vecteur se déroule sur la mémoire de la pile, donc memcpy ne peut pas l'atteindre car il est seul souci est tas ... Eh bien ce morceau de code pourrait fonctionner pour moi maintenant:
copie (buf, buf + 5 myVvector.begin());
Eh bien cela ne fonctionne pas aussi, puisque je n'utilise pas de nouveau mot-clé sur ma classe, ce vecteur, autant que je le comprends, n'est pas initialisé. Donc, si j'essaie de copier, push_back_fill ce vecteur avec smt, il me donne cette erreur:
Exception non gérée à 0x00ec455b dans newDel.exe: 0xC0000005: violation de l'accès lecture emplacement 0x00654b4c.
ce qui a du sens ... Donc, n'importe qui sait comment puis-je appeler constructeur/initializor de vecteur de l'extérieur?
Votre édition fait de très mauvaises choses je pense. Qu'est-ce que myVector? - mais que ce soit un tampon char ou un autre vecteur, vous contournez un comportement indéfini. Vous pourriez vous en tirer cependant si 'vecteur v (len); memcpy (& v [0], charbuffer, len); ' –
vecteur myvector ... eh bien ce n'est pas grave parce que c'était juste un exemple, pas le code réel. des dangers connus? –
MCA
"Je n'aime pas cette partie" ... Personnellement, ce n'est pas cette partie que je n'aime pas le plus. –