Bonjour a tous, je suis programeur de c++ depuis quelques ann=E9es et
j'avoue =E9prouver un petit proble avec stl... a vrai dire je suis
d=E9butant dans le concept de STL... je fait pr=E9sentement un programme
ou je doit utilis=E9 stl et jai tjs un probleme avec ca... j'arriverais
facilement a faire ce que jai a faire en utilisant le concep de liste
simplement chain=E9 mais je veux enfin comprendre le concept de STL
alors j'aurais besoin soit dun tutoriel pour finir apar comprendre ou
bien que quelqu'un regarde mon code et me disent ce qui ne va pas...
pour le tutoriel juste a continuer le topic et pour le code juste a
m'=E9crire a mon adresse mail alors merci a tout ceux qui liront ceci et
qui pouront maid=E9... merci a tous
On Thu, 11 Aug 2005 14:30:22 +0200, Arnaud Meurgues :
Je croyais que la SL contenait un sous-ensemble de la STL.
En fait, faudrait se mettre d'accord sur la signification de "STL" : parle-t-on de la STL en tant que bibliothèque développée indépendamment de la norme, ou du sous-ensemble d'icelle qui a été reprise dans la norme.
En fait, ce qui m'embête, c'est le mot "standard". De quel droit ce truc s'appelle-t-il "Standard quelque chose" s'il est indépendant de la norme ?
On Thu, 11 Aug 2005 14:30:22 +0200, Arnaud Meurgues
<news.arnaud@meurgues.non.fr.invalid>:
Je croyais que la SL contenait un sous-ensemble de la STL.
En fait, faudrait se mettre d'accord sur la signification de "STL" :
parle-t-on de la STL en tant que bibliothèque développée
indépendamment de la norme, ou du sous-ensemble d'icelle qui a été
reprise dans la norme.
En fait, ce qui m'embête, c'est le mot "standard". De quel droit ce
truc s'appelle-t-il "Standard quelque chose" s'il est indépendant de
la norme ?
On Thu, 11 Aug 2005 14:30:22 +0200, Arnaud Meurgues :
Je croyais que la SL contenait un sous-ensemble de la STL.
En fait, faudrait se mettre d'accord sur la signification de "STL" : parle-t-on de la STL en tant que bibliothèque développée indépendamment de la norme, ou du sous-ensemble d'icelle qui a été reprise dans la norme.
En fait, ce qui m'embête, c'est le mot "standard". De quel droit ce truc s'appelle-t-il "Standard quelque chose" s'il est indépendant de la norme ?
Laurent Deniau
Fabien LE LEZ wrote:
On 11 Aug 2005 05:16:53 -0700, "meow" :
que je passe un peu moins pour un ane dans les newsgroup ;)
De toutes façons, il n'y a pas de son sur Usenet-fr.
Donc, j'avais cru comprendre que : - le C++ était la norme du langage, ce qu'on trouve dans le Stroustrup.
Non.
Le C++ est un langage.
La norme ISO-quelque_chose est un document qui décrit le fonctionnement "idéalisé" du langage. Les implémentations sont censées tenter de s'en approcher.
Le Stroustrup est un livre explicatif, à destination des programmeurs
La norme est un document descriptif, à destination des auteurs de compilateurs principalement.
Et aussi des programmeurs commun. Il y a des points important qui sont dans la norme et pas dans le TC++PL3.
a+, ld.
Fabien LE LEZ wrote:
On 11 Aug 2005 05:16:53 -0700, "meow" <ben@agat.net>:
que je passe un peu moins pour un ane
dans les newsgroup ;)
De toutes façons, il n'y a pas de son sur Usenet-fr.
Donc, j'avais cru comprendre que :
- le C++ était la norme du langage, ce qu'on trouve dans le
Stroustrup.
Non.
Le C++ est un langage.
La norme ISO-quelque_chose est un document qui décrit le
fonctionnement "idéalisé" du langage. Les implémentations sont censées
tenter de s'en approcher.
Le Stroustrup est un livre explicatif, à destination des programmeurs
La norme est un document descriptif, à destination des auteurs de
compilateurs principalement.
Et aussi des programmeurs commun. Il y a des points important qui sont
dans la norme et pas dans le TC++PL3.
que je passe un peu moins pour un ane dans les newsgroup ;)
De toutes façons, il n'y a pas de son sur Usenet-fr.
Donc, j'avais cru comprendre que : - le C++ était la norme du langage, ce qu'on trouve dans le Stroustrup.
Non.
Le C++ est un langage.
La norme ISO-quelque_chose est un document qui décrit le fonctionnement "idéalisé" du langage. Les implémentations sont censées tenter de s'en approcher.
Le Stroustrup est un livre explicatif, à destination des programmeurs
La norme est un document descriptif, à destination des auteurs de compilateurs principalement.
Et aussi des programmeurs commun. Il y a des points important qui sont dans la norme et pas dans le TC++PL3.
a+, ld.
Arnaud Meurgues
Fabien LE LEZ wrote:
En fait, ce qui m'embête, c'est le mot "standard". De quel droit ce truc s'appelle-t-il "Standard quelque chose" s'il est indépendant de la norme ?
Il ne s'appelle pas "standard", il s'appelle "STepanov et Lee", du nom de leurs créateurs. ;-)
Bon, ok, c'est supposé vouloir dire "Standard Template Library" aussi. Mais bon, un standard, c'est ce que quelqu'un a décidé d'appeler standard un jour (VHS, par exemple). Et l'on peut supposer qu'ils voulaient faire quelque chose de standard.
Et je ne crois pas qu'il y ait besoin d'une autorisation spéciale pour appeler quelque chose "standard".
-- Arnaud
Fabien LE LEZ wrote:
En fait, ce qui m'embête, c'est le mot "standard". De quel droit ce
truc s'appelle-t-il "Standard quelque chose" s'il est indépendant de
la norme ?
Il ne s'appelle pas "standard", il s'appelle "STepanov et Lee", du nom
de leurs créateurs. ;-)
Bon, ok, c'est supposé vouloir dire "Standard Template Library" aussi.
Mais bon, un standard, c'est ce que quelqu'un a décidé d'appeler
standard un jour (VHS, par exemple). Et l'on peut supposer qu'ils
voulaient faire quelque chose de standard.
Et je ne crois pas qu'il y ait besoin d'une autorisation spéciale pour
appeler quelque chose "standard".
En fait, ce qui m'embête, c'est le mot "standard". De quel droit ce truc s'appelle-t-il "Standard quelque chose" s'il est indépendant de la norme ?
Il ne s'appelle pas "standard", il s'appelle "STepanov et Lee", du nom de leurs créateurs. ;-)
Bon, ok, c'est supposé vouloir dire "Standard Template Library" aussi. Mais bon, un standard, c'est ce que quelqu'un a décidé d'appeler standard un jour (VHS, par exemple). Et l'on peut supposer qu'ils voulaient faire quelque chose de standard.
Et je ne crois pas qu'il y ait besoin d'une autorisation spéciale pour appeler quelque chose "standard".
-- Arnaud
tigui1984
Bon bien Comment pourais-je décrire mon probleme... apres réfelxion je vais vous montrer le bout de code me connant mal a la tete
string YorN="N"; do { cout<<"Désirez-vous l'Extra avec votre Billet? (O/N) "; cin>>YorN; YorN=string_toupper(YorN); if (YorN=="O") new_Billet->SetExtra(); if (YorN.length()!=1||(YorN[0]!='O'&&YorN[0]!='N')) { Write_Warning("Entrée Invalide"); Pause(); } } while(YorN.length()!=1||(YorN[0]!='O'&&YorN[0]!='N')); Liste.push_back(new_Billet); }
void Delete_Billet(Billet Liste) { itBillet it; int i=0; for (it = Liste.begin(),i=0; it != Liste.end(); it++,i++) { delete *it; cout<<i; } cout<<endl<<i<<endl; Liste.clear(); }
void Game(int Week,long int Money) { Billet Liste_Billet; int NbBillet=0,Error; string sChoix; clrscr(); do { Error=1; Write_Warning("Semaine ", Week); cout<<"Argent: "<<Money<<endl <<"Billets: "<<NbBillet<<endl <<endl <<"(A)cheter un billet - (T)irage - (V)oir les numeros"<<endl <<"(R)esultat antérieur - (Q)uitter"<<endl <<endl <<"Faite Votre Choix: "; cin>>sChoix; sChoix=string_toupper(sChoix); if (sChoix.length()==1) { switch (sChoix[0]) { case 'A': { Add_Billet(&Liste_Billet); } break; case 'T': { Error=0; } break; case 'V': { } break; case 'R': { } break; case 'Q': { Error=0; } break; default: { Write_Warning("Entrée Invalide"); Pause(); } break; } } } while (Error!=0); Delete_Billet(Liste_Billet); }
Le probleme cé que jarrive pas a utilisé le push_back() il me dit que ce n'est pas défini et si jenleve les étaoile (*) et les perluette (&) je n'arrive pas effacer la memmoire alouer donc ma memmoire reste donc attribuer et ne se vide pas :S que faire
Bon bien Comment pourais-je décrire mon probleme... apres réfelxion
je vais vous montrer le bout de code me connant mal a la tete
string YorN="N";
do
{
cout<<"Désirez-vous l'Extra avec votre Billet? (O/N) ";
cin>>YorN;
YorN=string_toupper(YorN);
if (YorN=="O")
new_Billet->SetExtra();
if (YorN.length()!=1||(YorN[0]!='O'&&YorN[0]!='N'))
{
Write_Warning("Entrée Invalide");
Pause();
}
}
while(YorN.length()!=1||(YorN[0]!='O'&&YorN[0]!='N'));
Liste.push_back(new_Billet);
}
void Delete_Billet(Billet Liste)
{
itBillet it;
int i=0;
for (it = Liste.begin(),i=0; it != Liste.end(); it++,i++)
{
delete *it;
cout<<i;
}
cout<<endl<<i<<endl;
Liste.clear();
}
void Game(int Week,long int Money)
{
Billet Liste_Billet;
int NbBillet=0,Error;
string sChoix;
clrscr();
do
{
Error=1;
Write_Warning("Semaine ", Week);
cout<<"Argent: "<<Money<<endl
<<"Billets: "<<NbBillet<<endl
<<endl
<<"(A)cheter un billet - (T)irage - (V)oir les
numeros"<<endl
<<"(R)esultat antérieur - (Q)uitter"<<endl
<<endl
<<"Faite Votre Choix: ";
cin>>sChoix;
sChoix=string_toupper(sChoix);
if (sChoix.length()==1)
{
switch (sChoix[0])
{
case 'A':
{
Add_Billet(&Liste_Billet);
}
break;
case 'T':
{
Error=0;
}
break;
case 'V':
{
}
break;
case 'R':
{
}
break;
case 'Q':
{
Error=0;
}
break;
default:
{
Write_Warning("Entrée Invalide");
Pause();
}
break;
}
}
}
while (Error!=0);
Delete_Billet(Liste_Billet);
}
Le probleme cé que jarrive pas a utilisé le push_back() il me dit que
ce n'est pas défini et si jenleve les étaoile (*) et les perluette
(&) je n'arrive pas effacer la memmoire alouer donc ma memmoire reste
donc attribuer et ne se vide pas :S que faire
string YorN="N"; do { cout<<"Désirez-vous l'Extra avec votre Billet? (O/N) "; cin>>YorN; YorN=string_toupper(YorN); if (YorN=="O") new_Billet->SetExtra(); if (YorN.length()!=1||(YorN[0]!='O'&&YorN[0]!='N')) { Write_Warning("Entrée Invalide"); Pause(); } } while(YorN.length()!=1||(YorN[0]!='O'&&YorN[0]!='N')); Liste.push_back(new_Billet); }
void Delete_Billet(Billet Liste) { itBillet it; int i=0; for (it = Liste.begin(),i=0; it != Liste.end(); it++,i++) { delete *it; cout<<i; } cout<<endl<<i<<endl; Liste.clear(); }
void Game(int Week,long int Money) { Billet Liste_Billet; int NbBillet=0,Error; string sChoix; clrscr(); do { Error=1; Write_Warning("Semaine ", Week); cout<<"Argent: "<<Money<<endl <<"Billets: "<<NbBillet<<endl <<endl <<"(A)cheter un billet - (T)irage - (V)oir les numeros"<<endl <<"(R)esultat antérieur - (Q)uitter"<<endl <<endl <<"Faite Votre Choix: "; cin>>sChoix; sChoix=string_toupper(sChoix); if (sChoix.length()==1) { switch (sChoix[0]) { case 'A': { Add_Billet(&Liste_Billet); } break; case 'T': { Error=0; } break; case 'V': { } break; case 'R': { } break; case 'Q': { Error=0; } break; default: { Write_Warning("Entrée Invalide"); Pause(); } break; } } } while (Error!=0); Delete_Billet(Liste_Billet); }
Le probleme cé que jarrive pas a utilisé le push_back() il me dit que ce n'est pas défini et si jenleve les étaoile (*) et les perluette (&) je n'arrive pas effacer la memmoire alouer donc ma memmoire reste donc attribuer et ne se vide pas :S que faire
tigui1984
Merci Bien pour le coup de main... je vais regarder cela et je ten redonne des news... merci encore
Merci Bien pour le coup de main... je vais regarder cela et je ten
redonne des news... merci encore
Merci Bien pour l'adresse meow je ten redonne des nouvelle apres avoir pris connaissance de ce tutoriel
Arnaud Meurgues
wrote:
void Add_Billet(Billet *Liste)
Liste est un pointeur.
Liste.push_back(new_Billet);
Donc, ce devrait être Liste->push_back(new_Billet); Ou alors, il faut passer la liste par référence (c'est mieux) :
void Add_Billet(Billet& Liste)
void Delete_Billet(Billet Liste)
Attention. La liste est passée par valeur, et donc recopiée dans une nouvelle liste. Si vous voulez modifier la liste passée en paramètre, il faut la passer par référence :
void Delete_Billet(Billet& Liste)
Liste.clear();
Sinon, ici, vous ne videz que la recopie de la liste et non la liste elle-même.
Le probleme cé que jarrive pas a utilisé le push_back() il me dit que ce n'est pas défini et si jenleve les étaoile (*) et les perluette (&) je n'arrive pas effacer la memmoire alouer donc ma memmoire reste donc attribuer et ne se vide pas :S que faire
Bien comprendre les passages par : - valeur (l'objet est recopié) - pointeur (on passe l'adresse de l'objet) - référence (on passe l'adresse de l'objet avec une syntaxe qui permet de s'en servir comme si on avait passé l'objet et une référence ne peut être nulle, contrairement à un pointeur, donc est préférable à un pointeur si l'on ne veut pas permettre de recevoir un pointeur nul ou invalide)
-- Arnaud
tigui1984@gmail.com wrote:
void Add_Billet(Billet *Liste)
Liste est un pointeur.
Liste.push_back(new_Billet);
Donc, ce devrait être
Liste->push_back(new_Billet);
Ou alors, il faut passer la liste par référence (c'est mieux) :
void Add_Billet(Billet& Liste)
void Delete_Billet(Billet Liste)
Attention. La liste est passée par valeur, et donc recopiée dans une
nouvelle liste. Si vous voulez modifier la liste passée en paramètre, il
faut la passer par référence :
void Delete_Billet(Billet& Liste)
Liste.clear();
Sinon, ici, vous ne videz que la recopie de la liste et non la liste
elle-même.
Le probleme cé que jarrive pas a utilisé le push_back() il me dit que
ce n'est pas défini et si jenleve les étaoile (*) et les perluette
(&) je n'arrive pas effacer la memmoire alouer donc ma memmoire reste
donc attribuer et ne se vide pas :S que faire
Bien comprendre les passages par :
- valeur (l'objet est recopié)
- pointeur (on passe l'adresse de l'objet)
- référence (on passe l'adresse de l'objet avec une syntaxe qui permet
de s'en servir comme si on avait passé l'objet et une référence ne peut
être nulle, contrairement à un pointeur, donc est préférable à un
pointeur si l'on ne veut pas permettre de recevoir un pointeur nul ou
invalide)
Donc, ce devrait être Liste->push_back(new_Billet); Ou alors, il faut passer la liste par référence (c'est mieux) :
void Add_Billet(Billet& Liste)
void Delete_Billet(Billet Liste)
Attention. La liste est passée par valeur, et donc recopiée dans une nouvelle liste. Si vous voulez modifier la liste passée en paramètre, il faut la passer par référence :
void Delete_Billet(Billet& Liste)
Liste.clear();
Sinon, ici, vous ne videz que la recopie de la liste et non la liste elle-même.
Le probleme cé que jarrive pas a utilisé le push_back() il me dit que ce n'est pas défini et si jenleve les étaoile (*) et les perluette (&) je n'arrive pas effacer la memmoire alouer donc ma memmoire reste donc attribuer et ne se vide pas :S que faire
Bien comprendre les passages par : - valeur (l'objet est recopié) - pointeur (on passe l'adresse de l'objet) - référence (on passe l'adresse de l'objet avec une syntaxe qui permet de s'en servir comme si on avait passé l'objet et une référence ne peut être nulle, contrairement à un pointeur, donc est préférable à un pointeur si l'on ne veut pas permettre de recevoir un pointeur nul ou invalide)
-- Arnaud
tigui1984
Merci vraiment BCP et VRAIMENT BCP pour cette aide si précieuse
Merci vraiment BCP et VRAIMENT BCP pour cette aide si précieuse
Tout fonctionne a Merveille Je vous remerci tous autant que vous avez été a me donner un coup de main... Merci encore
Michel Michaud
Dans le message 42fb4478$0$29935$,
Michel Michaud wrote:
<Mode "J'adore être pédant"> Étant donné que la STL est un composant de C++, si tu étudies le C++, tu étudies la STL par la même occasion. </Mode>
<mode pédant="vraiment"> Non, c'est la SL (bibliothèque standard) qui est un composant de C++... Et la SL contient une version de la STL. </mode>
<mode chipoteur="on"> Je croyais que la SL contenait un sous-ensemble de la STL. Par exemple hash_map ne fait pas partie de la SL, mais bien de la STL. </mode>
<mode dernièreRemarque="true"> On peut dire ce qu'on veut, mais non seulement il est difficile de dire ce qui délimiterait vraiment ce sous-ensemble, mais il y a clairement des éléments de la STL que l'on retrouve sous une forme modifiée dans la SL. Cette partie n'est donc pas un sous-ensemble de la STL. Il y a aussi carrément des choses de la SL qui n'étaient pas dans la STL, même si elles auraient pu y être.
Tout ça pour dire que la SL contient bel et bien des algorithmes, des itérateurs et des collections, comme la STL, et que tout ça est bel et bien inspiré (pour prendre un mot faible) de la STL. Mais c'est dommage qu'on continue à entendre parler de STL quand on parle de la bibliothèque de C++ : ce n'est ni la même chose, ni un sous-ensemble, ni un sur-ensemble, ... </mode>
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Dans le message 42fb4478$0$29935$626a14ce@news.free.fr,
Michel Michaud wrote:
<Mode "J'adore être pédant">
Étant donné que la STL est un composant de C++, si tu étudies le
C++, tu étudies la STL par la même occasion.
</Mode>
<mode pédant="vraiment">
Non, c'est la SL (bibliothèque standard) qui est un composant de
C++... Et la SL contient une version de la STL.
</mode>
<mode chipoteur="on">
Je croyais que la SL contenait un sous-ensemble de la STL. Par
exemple hash_map ne fait pas partie de la SL, mais bien de la STL.
</mode>
<mode dernièreRemarque="true">
On peut dire ce qu'on veut, mais non seulement il est difficile de
dire ce qui délimiterait vraiment ce sous-ensemble, mais il y a
clairement des éléments de la STL que l'on retrouve sous une forme
modifiée dans la SL. Cette partie n'est donc pas un sous-ensemble
de la STL. Il y a aussi carrément des choses de la SL qui n'étaient
pas dans la STL, même si elles auraient pu y être.
Tout ça pour dire que la SL contient bel et bien des algorithmes,
des itérateurs et des collections, comme la STL, et que tout ça
est bel et bien inspiré (pour prendre un mot faible) de la STL.
Mais c'est dommage qu'on continue à entendre parler de STL quand
on parle de la bibliothèque de C++ : ce n'est ni la même chose,
ni un sous-ensemble, ni un sur-ensemble, ...
</mode>
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
<Mode "J'adore être pédant"> Étant donné que la STL est un composant de C++, si tu étudies le C++, tu étudies la STL par la même occasion. </Mode>
<mode pédant="vraiment"> Non, c'est la SL (bibliothèque standard) qui est un composant de C++... Et la SL contient une version de la STL. </mode>
<mode chipoteur="on"> Je croyais que la SL contenait un sous-ensemble de la STL. Par exemple hash_map ne fait pas partie de la SL, mais bien de la STL. </mode>
<mode dernièreRemarque="true"> On peut dire ce qu'on veut, mais non seulement il est difficile de dire ce qui délimiterait vraiment ce sous-ensemble, mais il y a clairement des éléments de la STL que l'on retrouve sous une forme modifiée dans la SL. Cette partie n'est donc pas un sous-ensemble de la STL. Il y a aussi carrément des choses de la SL qui n'étaient pas dans la STL, même si elles auraient pu y être.
Tout ça pour dire que la SL contient bel et bien des algorithmes, des itérateurs et des collections, comme la STL, et que tout ça est bel et bien inspiré (pour prendre un mot faible) de la STL. Mais c'est dommage qu'on continue à entendre parler de STL quand on parle de la bibliothèque de C++ : ce n'est ni la même chose, ni un sous-ensemble, ni un sur-ensemble, ... </mode>
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/