Amanobuo
Messages postés65Date d'inscriptionmardi 24 février 2004StatutMembreDernière intervention11 décembre 2006
-
2 mai 2006 à 11:19
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
2 mai 2006 à 20:41
Bonjour, j essaye d utiliser erase (std) dans un vecteur d'entier, mais les valeurs sont
toujours la, ou est mon erreur de manipulation ?
merci !!
#include <vector>
using namespace std;
int main()
{
int i;
vector vect1d;
vect1d.resize(10); //10 elements
fill( vect1d.begin(), vect1d.end(), 100 ); //remplir avec des 100
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 2 mai 2006 à 12:08
En effet, c'est un problème bizarre. surtout que si tu fais un cout << vect1d.size(); apres le erase il afficher 0.
A la limite, tu peut remplacer le i<10 par vect1d.size()
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 2 mai 2006 à 13:43
Moi j'ai une erreur d'exécution quand j'affiche vect1d[i] (ce qui est normal), et la size() retourne bien 0 (compilé avec VS 2005)
Quel est ton compilo? Il faudrait peut être en changer...
Amanobuo
Messages postés65Date d'inscriptionmardi 24 février 2004StatutMembreDernière intervention11 décembre 2006 2 mai 2006 à 15:31
J' ai essaye et vect1d.size() renvoie bien 0.
Je crois donc que effacer des valeurs dans un vecteur fonctionne comme un formatage logique dans une partition fat : les données sont toujours presente mais en ecriture pour d'autres programmes ?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 2 mai 2006 à 20:21
Il me semble que lorsque tu utilises erase, il détruit la case, mais ne
vide pas la mémoire. Ton vector est bien remis a jour, mais pas la
mémoire donc ta valeur reste en mémoire. Donc je vois pas d'anomalie,
si ce n'est que tu as de la chance que la mémoire reste intact jusqu'à
ce que tu affiches les valeurs.
Vous n’avez pas trouvé la réponse que vous recherchez ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 2 mai 2006 à 20:41
Petite précision: l'accès avec [] n'est pas contrôlé. Ainsi on peux très bien faire vect1d[i] et ca peut marcher. Si on veut un accès sécurisé, il y a la méthode at(i), qui vérifie l'index, et provoque une exception de type out_of_range si l'index n'est pas correct