IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

supprimer valeurs dans vector


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2015
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 28
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 12
    Par d�faut supprimer valeurs dans vector
    Bonjour, en executant mon code ci dessous, une erreur m'apparait :
    Expression: Vector suscrit out of range ( Le but etant de supprimer les nombres paires dans le second tableau, en utilisant vector et erase )
    Je ne comprend pas cette erreur, et solicite de l'aide merci


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include <iostream>
    #include <conio.h>
    #include <vector>
     
    using namespace std;
     
    void main()
    {
    	const int nMax = 20;
    	vector<int> tab(20);
    	for (int a = 0; a < nMax; a++)
    	{
    		tab[a] = rand() % 101;
    	}
    	cout << "Voici le tableau de 20 entiers donne aleatoirement." << endl;
    	for (int a = 0; a < nMax; a++)
    	{
    		cout<<" | "<< tab[a];
    	}
    	cout << "\n\nVoici le tableau sans les nombres paires :" << endl;
    	for (int a = 0; a < nMax; a++)
    	{
    		if (tab[a]%2==0)
    		{
    			tab.erase(tab.begin());
    		}
    		else
    		{
    			cout << " | " << tab[a];
    		}
    	}
    	_getch();
    }

  2. #2
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Salut,

    tu parcours ton tableau sur 20 cases, et en chemin tu supprimes des cases.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  3. #3
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2015
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 28
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 12
    Par d�faut
    Je comprend, cependant quand je le diminue s'est automatiquement la derniere valeur qui est supprim�e,
    pouvez vous m'indiquez comment faire?

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    Lisez la documentation.
    http://www.cplusplus.com/reference/vector/vector/erase/

    Ligne 25, vous �tes s�r d'avoir supprim� le bon �l�ment ???

    Apr�s �tre pass� une fois en ligne 25, la taille du tableau est de 19.
    Pensez-vous qu'apr�s cela les bornes de la boucle en ligne 21 sont pertinentes ?

  5. #5
    Membre Expert

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par d�faut
    Le mieux c'est de prendre le r�flexe d'utiliser la biblioth�que standard, en particulier les algorithmes:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <algorithm>
    #include <vector>
     
    int main() {
     
      std::vector<int> v = { 0, 1, 2, 3, 4, 5 };
      v.erase( std::remove_if(v.begin(), v.end(), [](int x) { return x % 2 != 0; }) , v.end() );
     
    }
    std::remove_if(b, e, p) repousse tous les �l�ments qui satisfont � p au bout du conteneur et renvoie un it�rateur qui pointe apr�s le dernier �l�ment pour lequel p est faux.

  6. #6
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2015
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 28
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 12
    Par d�faut
    Merci pour vos reponses,

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <iostream>
    #include <conio.h>
    #include <vector>
    #include <algorithm>
     
    using namespace std;
     
    void main()
    {
    	int nMax = 20;
    	vector<int> tab(nMax);
    	for (int a = 0; a < nMax; a++)
    	{
    		tab[a] = rand() % 101;
    	}
    	cout << "Voici le tableau de 20 entiers donne aleatoirement." << endl;
    	for (int a = 0; a < nMax; a++)
    	{
    		cout<<" | "<< tab[a];
    	}
    	cout << "\n\nVoici le tableau sans les nombres paires :" << endl;
    	for (int a = 0; a < nMax; a++)
    	{
    		tab.erase(remove_if(tab.begin(), tab.end(), [](int x){ return x % 2 == 0; }), tab.end());
    		nMax = nMax - 1;
    			cout << " | " << tab[a];
    	}
    	_getch();
    }
    Avec ce code, le but de l'exercice est r�alis�, cependant j'ai un dernier probleme, ici ma derniere valeur aleatoire �tait 83, il devrait donc apparaitre
    � la fin, mais il n'y ai pas. Sinon pour les autres valeurs impairs ton astuce marche Merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MySQL] Probleme Insert svp
    Par chanteur06 dans le forum PHP & Base de donn�es
    R�ponses: 5
    Dernier message: 13/10/2014, 16h19
  2. Ou est le probleme ici svp
    Par narpu dans le forum D�buter
    R�ponses: 3
    Dernier message: 26/04/2011, 11h45
  3. Probleme requete svp
    Par swiixz dans le forum Langage SQL
    R�ponses: 5
    Dernier message: 21/06/2007, 19h43
  4. probleme Jinternalframe svp
    Par swiixz dans le forum AWT/Swing
    R�ponses: 13
    Dernier message: 30/05/2007, 18h38
  5. probleme projet svp
    Par ruspy dans le forum C++
    R�ponses: 3
    Dernier message: 20/04/2006, 08h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo