begin process at 2012 05 30 05:26:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

vector


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

vector

mercredi 5 mars 2003 à 11:03:55 | vector

borgeomi

Membre Club
borgeomibonjouuuuuuur !!!!!

j'ai crée un vector

struct enregistrement

{
string zone_date;
string zone_montant;
string zone_nom;
};

typedef vector<enregistrement> Vecteur;

Vecteur e;

Comment fait-on pour tester par exemple la zone nom
de chaque élément du vecteur ?


Cordialement

mercredi 5 mars 2003 à 15:10:33 | Re : vector

davidsm

Dans ton source tu crées un vectror vide.
Pour voir quelque chose il faut le remplir.
Pour accéder au champ nom du l'enregistrement n du vector tu accédes par : e[n].zone_nom.

Ci-dessous tu as un exemple de source qui farci le vector et surcharge << pour faire un affichage propre.

//------------------------------------
#include <string>
#include <vector>
#include <iostream>

using namespace std;

struct enregistrement
{
string zone_date;
string zone_montant;
string zone_nom;
};

// Surcharge de l'opérateur<< pour écrire "enregistrement"
ostream &operator<< (ostream &fluxS, enregistrement &enrg) {
fluxS<<enrg.zone_date<<" ";
fluxS<<enrg.zone_montant<<" ";
fluxS<<enrg.zone_nom<<" ";
return fluxS;
}


typedef vector<enregistrement> Vecteur;

int main(void){
// Définit un vector avec 2 enregistrements
Vecteur e(2);

enregistrement var;
var.zone_date="05.03.2003";
var.zone_montant="55555";
var.zone_nom="AQW";
// Renseigne le 1er enregistrement
e[0].zone_date="05.03.2003";
e[0].zone_montant="888";
e[0].zone_nom= "Azerty";
// Ajoute un enregistrement en faisant grossir le vector
e.push_back(var);
// affiche e[0], le 1er
cout<<e[0]<<endl;
// affiche e[2], le dernier
cout<<*(e.end()-1)<<endl;
return 0;
}



Sur vector tu peux voir
http://www.cppfrance.com/article.aspx?Val=1331
vendredi 7 mars 2003 à 09:48:59 | Re : vector

borgeomi

Membre Club

borgeomibonjouuuuuuur !!!!!

Merci beaucoup de votre réponse

si je peux abuser

J'ai créer un itérateur

Vecteur::iterator courant_simple=e.begin();

comment indicer e pour tester une zone quelconque par exemple nom ?

while (courant_simple != e.end())

{

if e.zone_nom== "Azerty" };

++ courant_simple;

}


cordialement

Michel BORGEOT

e-mail : borgeomi@cic.fr




-------------------------------
Réponse au message :
-------------------------------

> Dans ton source tu crées un vectror vide.
> Pour voir quelque chose il faut le remplir.
> Pour accéder au champ nom du l'enregistrement n du vector tu accédes par : e[n].zone_nom.
>
> Ci-dessous tu as un exemple de source qui farci le vector et surcharge << pour faire un affichage propre.
>
> //------------------------------------
> #include <string>
> #include <vector>
> #include <iostream>
>
> using namespace std;
>
> struct enregistrement
> {
> string zone_date;
> string zone_montant;
> string zone_nom;
> };
>
> // Surcharge de l'opérateur<< pour écrire "enregistrement"
> ostream &operator<< (ostream &fluxS, enregistrement &enrg) {
> fluxS<<enrg.zone_date<<" ";
> fluxS<<enrg.zone_montant<<" ";
> fluxS<<enrg.zone_nom<<" ";
> return fluxS;
> }
>
>
> typedef vector<enregistrement> Vecteur;
>
> int main(void){
> // Définit un vector avec 2 enregistrements
> Vecteur e(2);
>
> enregistrement var;
> var.zone_date="05.03.2003";
> var.zone_montant="55555";
> var.zone_nom="AQW";
> // Renseigne le 1er enregistrement
> e[0].zone_date="05.03.2003";
> e[0].zone_montant="888";
> e[0].zone_nom= "Azerty";
> // Ajoute un enregistrement en faisant grossir le vector
> e.push_back(var);
> // affiche e[0], le 1er
> cout<<e[0]<<endl;
> // affiche e[2], le dernier
> cout<<*(e.end()-1)<<endl;
> return 0;
> }
>
>
>
> Sur vector tu peux voir
> http://www.cppfrance.com/article.aspx?Val=1331
vendredi 7 mars 2003 à 12:14:25 | Re : vector

davidsm

Bonjour,

Je te propose plusieurs manière d'accéder au champ nom
et de parcourir le vector.
Le plus simple est d'utiliser l'op [] comme pour un tableau

// Parcourt sytématique avec accés par l'opérateur []
trouve = false;
for (int i=0; i<e.size(); i++)
if(e[i].zone_nom=="AQW") trouve=true;
// size() donne la taille, != de capacite()


vector<enregistrement>::iterator itr;
// itr se comporte comme un pointeur il faut utiliser
// l'opérateur -> pour accéder à un membre de la structure

// Parcourt systèmatique
bool trouve = false;
for(itr=e.begin(); itr<e.end(); itr++)
if(itr->zone_nom=="Azerty") trouve=true;

// Parcourir pour chercher tq pas trouvé ou pas arrivé à la Fin
itr=e.begin();
while((itr!=e.end()) && (itr->zone_nom!="AQW"))
itr++;


A+ et bonne prog C++

-------------------------------
Réponse au message :
-------------------------------

>
> borgeomibonjouuuuuuur !!!!!
>
> Merci beaucoup de votre réponse
>
> si je peux abuser
>
> J'ai créer un itérateur
>
> Vecteur::iterator courant_simple=e.begin();
>
> comment indicer e pour tester une zone quelconque par exemple nom ?
>
> while (courant_simple != e.end())
>
> {
>
> if e.zone_nom== "Azerty" };
>
> ++ courant_simple;
>
> }
>
>
> cordialement
>
> Michel BORGEOT
>
> e-mail : borgeomi@cic.fr
>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Dans ton source tu crées un vectror vide.
> > Pour voir quelque chose il faut le remplir.
> > Pour accéder au champ nom du l'enregistrement n du vector tu accédes par : e[n].zone_nom.
> >
> > Ci-dessous tu as un exemple de source qui farci le vector et surcharge << pour faire un affichage propre.
> >
> > //------------------------------------
> > #include <string>
> > #include <vector>
> > #include <iostream>
> >
> > using namespace std;
> >
> > struct enregistrement
> > {
> > string zone_date;
> > string zone_montant;
> > string zone_nom;
> > };
> >
> > // Surcharge de l'opérateur<< pour écrire "enregistrement"
> > ostream &operator<< (ostream &fluxS, enregistrement &enrg) {
> > fluxS<<enrg.zone_date<<" ";
> > fluxS<<enrg.zone_montant<<" ";
> > fluxS<<enrg.zone_nom<<" ";
> > return fluxS;
> > }
> >
> >
> > typedef vector<enregistrement> Vecteur;
> >
> > int main(void){
> > // Définit un vector avec 2 enregistrements
> > Vecteur e(2);
> >
> > enregistrement var;
> > var.zone_date="05.03.2003";
> > var.zone_montant="55555";
> > var.zone_nom="AQW";
> > // Renseigne le 1er enregistrement
> > e[0].zone_date="05.03.2003";
> > e[0].zone_montant="888";
> > e[0].zone_nom= "Azerty";
> > // Ajoute un enregistrement en faisant grossir le vector
> > e.push_back(var);
> > // affiche e[0], le 1er
> > cout<<e[0]<<endl;
> > // affiche e[2], le dernier
> > cout<<*(e.end()-1)<<endl;
> > return 0;
> > }
> >
> >
> >
> > Sur vector tu peux voir
> > http://www.cppfrance.com/article.aspx?Val=1331
>
vendredi 7 mars 2003 à 13:52:24 | Re : vector

davidsm

Re Bonjour,

Il y a une petite non conformité dans le commentaire :
> // Parcourt sytématique avec accés par l'opérateur []
> -
> -
> -
> // --- != de capacite()
Il faut rempalcer capacite() / capacity()

-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
>
> Je te propose plusieurs manière d'accéder au champ nom
> et de parcourir le vector.
> Le plus simple est d'utiliser l'op [] comme pour un tableau
>
> // Parcourt sytématique avec accés par l'opérateur []
> trouve = false;
> for (int i=0; i<e.size(); i++)
> if(e[i].zone_nom=="AQW") trouve=true;
> // size() donne la taille, != de capacite()
>
>
> vector<enregistrement>::iterator itr;
> // itr se comporte comme un pointeur il faut utiliser
> // l'opérateur -> pour accéder à un membre de la structure
>
> // Parcourt systèmatique
> bool trouve = false;
> for(itr=e.begin(); itr<e.end(); itr++)
> if(itr->zone_nom=="Azerty") trouve=true;
>
> // Parcourir pour chercher tq pas trouvé ou pas arrivé à la Fin
> itr=e.begin();
> while((itr!=e.end()) && (itr->zone_nom!="AQW"))
> itr++;
>
>
> A+ et bonne prog C++
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> > borgeomibonjouuuuuuur !!!!!
> >
> > Merci beaucoup de votre réponse
> >
> > si je peux abuser
> >
> > J'ai créer un itérateur
> >
> > Vecteur::iterator courant_simple=e.begin();
> >
> > comment indicer e pour tester une zone quelconque par exemple nom ?
> >
> > while (courant_simple != e.end())
> >
> > {
> >
> > if e.zone_nom== "Azerty" };
> >
> > ++ courant_simple;
> >
> > }
> >
> >
> > cordialement
> >
> > Michel BORGEOT
> >
> > e-mail : borgeomi@cic.fr
> >
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Dans ton source tu crées un vectror vide.
> > > Pour voir quelque chose il faut le remplir.
> > > Pour accéder au champ nom du l'enregistrement n du vector tu accédes par : e[n].zone_nom.
> > >
> > > Ci-dessous tu as un exemple de source qui farci le vector et surcharge << pour faire un affichage propre.
> > >
> > > //------------------------------------
> > > #include <string>
> > > #include <vector>
> > > #include <iostream>
> > >
> > > using namespace std;
> > >
> > > struct enregistrement
> > > {
> > > string zone_date;
> > > string zone_montant;
> > > string zone_nom;
> > > };
> > >
> > > // Surcharge de l'opérateur<< pour écrire "enregistrement"
> > > ostream &operator<< (ostream &fluxS, enregistrement &enrg) {
> > > fluxS<<enrg.zone_date<<" ";
> > > fluxS<<enrg.zone_montant<<" ";
> > > fluxS<<enrg.zone_nom<<" ";
> > > return fluxS;
> > > }
> > >
> > >
> > > typedef vector<enregistrement> Vecteur;
> > >
> > > int main(void){
> > > // Définit un vector avec 2 enregistrements
> > > Vecteur e(2);
> > >
> > > enregistrement var;
> > > var.zone_date="05.03.2003";
> > > var.zone_montant="55555";
> > > var.zone_nom="AQW";
> > > // Renseigne le 1er enregistrement
> > > e[0].zone_date="05.03.2003";
> > > e[0].zone_montant="888";
> > > e[0].zone_nom= "Azerty";
> > > // Ajoute un enregistrement en faisant grossir le vector
> > > e.push_back(var);
> > > // affiche e[0], le 1er
> > > cout<<e[0]<<endl;
> > > // affiche e[2], le dernier
> > > cout<<*(e.end()-1)<<endl;
> > > return 0;
> > > }
> > >
> > >
> > >
> > > Sur vector tu peux voir
> > > http://www.cppfrance.com/article.aspx?Val=1331
> >
>


Cette discussion est classée dans : string, zone, vector, vecteur, blue


Répondre à ce message

Sujets en rapport avec ce message

Pb de vecteur d'objet [ par 9sber ] Salut tout le mondeJ'ai longtemps cherché sur le forum des infos sur mon pb avant d'envoyer un p'tit msg mais voilà:J'essaie de créer un vecteur d'obj MULTIPLICATION D'UNE MATRICE PAR UN VECTEUR [ par jfk20004 ] Quelqu'un pourrait il m'expliquer le bout de code suivant tiré d'un prog de raytrace .Cette partie est censée multiplier une matriceet un vecteur.Je n classe string [ par kollibar ] bonjour,je debute en C++, j utilise borland C++ compiler 5.5où pourrais je trouver une explication detoutes les fonctions de la classe string??merciKO vector d'objet a trier (urgent svp) [ par omconq ] bonjour à tousj'ai une classe Noeud qui ne contient qu'un "string" , un constructeur et quelque méthodes.le string prendra une lettre A, B, .....Zj'ai trouver un char dasn une string et le convertir... [ par Spiffou ] bonjour à tous, je suis bloqué sur un problème de C++ avec les strings et les vectors. j'ai un vector contenant des std::string, et je souhaiterais e vector [ par c2millet ] Bojour à tous,Voilà mon problème, j'ai un vector de vector de string. Je me demandais si pour vider la totalité du tableau il fallait déja vider le ve [STL] vector d'une classe [ par Fa7 ] Bonjour J'ai un probleme. j'ai un vecteur d'une classe que j'ai definie vector vectGraph; et quand je je veux ajouter un graphe dans le vecteur: Gra Vector de classe [ par 0xYg3n3 ] Bonjour, Voila j'ai defini un vecteur de classe Mais le probleme c'est que je ne sais pas comment ajouter un objet avec un vecteur. En effet ma class vector [ par Vincentsoft ] Salut, J'aimerai simplement savoir quelles différences (avantages et/ou inconvénients) y-a t'il entre un parcours de vecteur à l'aide des iterator et Trier un vecteur de string [ par Filipousis ] Bjr a tous,Qlq'un a une idée comment faire pour trier un vecteur de string?Merci d'avance


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales