Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

test sur les vector de la stl

32 réponses
Avatar
heinquoi
bjr,
j'ai le code suivant que j'ai récupéré dans un cours de structure de
données. J'ai essayé de le compilé et j'ai plein d'erreurs ... quelqu'un
pourra t il m'aider a comprendre le code.


#include <vector>
#include <iostream.h>
//using namespace std;

ostream& operator<< (ostream& out, (const vector<int,allocator>& v))
{
copy (v.begin(), v.end(), ostream_iterator<int>(out," "));
return out;
}
// c'est surtout cette partie que je ne comprend pas bien et qui ne compile
pas.
// avec copy, je suis sensé recopier un vector dans le flux de sortie, pour
qu'il soit affiché par cout <<

int main ()
{
vector<int,allocator> vi;
int i;
for ( i=0; i<10; i++)
{
vi.insert(vi.begin(),i);
}

cout << vi << endl;
int half=vi.size()>>1;
for ( i=0; i < half; i++)
vi.erase(vi.begin());
cout << vi << endl;
return 0;
}

10 réponses

1 2 3 4
Avatar
Gabriel Dos Reis
Anthony Fleury writes:

| heinquoi wrote:
|
| >
| > "Gabriel Dos Reis" a écrit dans le message
| >> Q : combien de temps as-tu passé en cours et en TD ?
| > ca casse ! Gaby est remonté. tu es prof peut etre ?
|
| Même si j'aimerai un jour enseigner, je ne suis pas prof, mais je ne pense
| pas que ce soit une bonne méthode que de reprendre un code comme ca pour
| réviser un exam (si j'ai bien compris) en tentant de corriger comme ca au
| hasard les erreurs qui se sont glissés dedans.

Entièrement d'accord.

-- Gaby
Avatar
Anthony Fleury
heinquoi wrote:


"Gabriel Dos Reis" a écrit dans le message
de news:

Enlève les parenthèses autour de la déclaration de v.
bien, une erreur en moins mais tjrs 7 autres erreurs... souhaites tu

vraiment m'aider....



Peut etre parce que tu utilises copy qui n'est pas défini ici.
Je suppose que tu cherches std::copy qui est un des algorithmes de la STL
est donc :
#include <algorithm>

Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27


Avatar
Anthony Fleury
Gabriel Dos Reis wrote:

"heinquoi" <nospam* writes:

| oui c'est une idée sauf que ..... j'ai un exam sur ce meme cour dans 2
| semaines.

C'est une blague.


Si on veut troller sur l'éducation national on a eu en tout 7 cours de C++
de deux heures chacun.
Pour quelqu'un qui n'en fait qu'en cours, ca peut paraitre une blague en
effet vu le temps que j'ai passé à le bosser depuis quelque temps et
sachant que j'ai encore des tonnes de trucs à apprendre (merci pour les
précisions sur static au passage). En clair je ne vois pas comment avec un
cours uniquement on peut apprendre un langage de programmation :-)

Précision : je suis en école d'ingénieur et pour ceux qui ne faisaient pas
de programmation hors des cours on a eu 20h de C l'an dernier si ma mémoire
est bonne.

Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27

Avatar
heinquoi
"Anthony Fleury" a écrit dans le message de
news:40bba401$0$12745$
Peut etre parce que tu utilises copy qui n'est pas défini ici.
Je suppose que tu cherches std::copy qui est un des algorithmes de la STL
est donc :
#include <algorithm>

Et ....oui effectivement cela peut aider.

....apres compilation j'ai encore 3 erreurs d'ambiguité sur : ostream &
dans la fonction surchargé de operator<<
merci, cela permet d'avancer.
H

Avatar
heinquoi
pour info les exemples sont tiré de
http://www.roguewave.com/support/docs/hppdocs/stdref/vector.html

cordialement
H
Avatar
Anthony Fleury
heinquoi wrote:


"Anthony Fleury" a écrit dans le message de
news:40bba401$0$12745$
Peut etre parce que tu utilises copy qui n'est pas défini ici.
Je suppose que tu cherches std::copy qui est un des algorithmes de la STL
est donc :
#include <algorithm>

Et ....oui effectivement cela peut aider.

....apres compilation j'ai encore 3 erreurs d'ambiguité sur : ostream &
dans la fonction surchargé de operator<<
merci, cela permet d'avancer.
H


Quelles sont réelement les erreurs et le code ?
Car je suis remonté dans le thread, j'ai corrigé ce qui n'allait pas, donc
enlevé l'allocator, les (), ajouté l'include de <algorithm> et de
<iterator> et ca fonctionne. (et décommenté le using namespace std;)
Au passage il manquait donc cet include de <iterator> nécessaire pour le
ostream_iterator<>.

Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27


Avatar
Anthony Fleury
heinquoi wrote:


"Gabriel Dos Reis" a écrit dans le message
Q : combien de temps as-tu passé en cours et en TD ?
ca casse ! Gaby est remonté. tu es prof peut etre ?



Même si j'aimerai un jour enseigner, je ne suis pas prof, mais je ne pense
pas que ce soit une bonne méthode que de reprendre un code comme ca pour
réviser un exam (si j'ai bien compris) en tentant de corriger comme ca au
hasard les erreurs qui se sont glissés dedans.

Il serait peut etre bon de prendre les bases et de partir sur un exemple, de
le complexifier au fur et à mesure, pour voir ce qui est maitrisé ou pas
dans le langage. Partir comme ca dans du code qui contient des iterators,
des templates et des surcharges d'operateurs alors que (ce n'est pas un
reproche ni même une insulte) tu n'es pas capable de corriger une erreur
qui est l'ajout des parenthèses dans l'un des arguments d'une fonction me
parait un peu prématuré.

Ceci n'est bien sûr qu'un conseil d'un étudiant en école d'ingénieur et qui
a eu un cours et un exam de C++ aussi cette année.

Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27


Avatar
Anthony Fleury
Gabriel Dos Reis wrote:

Anthony Fleury writes:

En effet. J'avais l'habitude de dire que les maths c'est comme le
sport : on ne peut pas prétendre savoir pratiquer si on ne fait que
regarder les autres faire à la télé. Je maintiens que c'est encore
plus vrai en informatique -- surtout en programmation ou conception de
logiciel.



En effet, et aucun cours ne remplacera cette pratique, il faut bien sûr un
cours (ou même un bon livre) pour la syntaxe, ensuite c'est du travail
personnel.

| Précision : je suis en école d'ingénieur et pour ceux qui ne faisaient
| pas de programmation hors des cours on a eu 20h de C l'an dernier si ma
| mémoire est bonne.

J'ai aussi eu l'occasion d'enseigner en école d'ingénieur... et pas
seulement à des spécialistes -- à l'Écolel Centrale (de Lyon), par
exemple, ils sont plutôt généralistes.


En fait c'est une grande habitude, toutes les écoles deviennent généralistes
mais on ne sait pas vraiment faire une chose en en sortant. Je ne pense pas
que quelqu'un ayant seulement suivi le cours et les TDs de mon école puisse
mettre C++ comme langage de programmation sur son CV. (après je me trompe
peut etre sur ce que veux dire la mention C++ sur un CV pour un employeur)

et petite question qui me chifonne, en fait je fais de la programmation car
ca me passionne, donc je l'apprends pour moi, mais j'ai l'impression que
même après un an et quelques à apprendre et à lire des livres sur le C++
lorsque j'ai du temps (en parallèle à de la programmation systeme en C),
j'ai encore un niveau assez faible.
Je me demandais donc depuis combien de temps vous en faites, et en fait
combien de temps il fallait pour atteindre un bon niveau dans un langage
comme le C++ ?

Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27

Avatar
heinquoi
"Anthony Fleury" a écrit dans le message de
news:40bbad27$0$7701$
Quelles sont réelement les erreurs et le code ?
Car je suis remonté dans le thread, j'ai corrigé ce qui n'allait pas, donc
enlevé l'allocator, les (), ajouté l'include de <algorithm> et de
<iterator> et ca fonctionne. (et décommenté le using namespace std;)
Au passage il manquait donc cet include de <iterator> nécessaire pour le
ostream_iterator<>.


ok effectivement ca marche sous mingW sous windows, et sous bcc32 . Mais
j'ai encore un souci sous Intel 8 C++

#include <vector>
#include <iostream.h>
#include <algorithm>
#include <iterator>
using namespace std;

ostream& operator<< (ostream& out, const vector<int>& v)
{
copy (v.begin(), v.end(), ostream_iterator<int>(out," "));
return out;
}

int main ()
{
vector<int> vi;
int i;
for ( i=0; i<10; i++)
{
vi.insert(vi.begin(),i);
}

cout << vi << endl;
int half=vi.size()>>1;
for ( i=0; i < half; i++)
vi.erase(vi.begin());
cout << vi << endl;
return 0;
}

et l'erreur sous intel 8

X Mes Documents XMes ProgrammesVisualC++ 6vector1vector.cpp(8): error:
"ostream" is ambiguous
ostream& operator<< (ostream& out, const vector<int>& v)
^
D:X Mes Documents XMes ProgrammesVisualC++ 6vector1vector.cpp(8):
error: "ostream" is ambiguous
ostream& operator<< (ostream& out, const vector<int>& v)
^
C:Program FilesMicrosoft Visual StudioVC98INCLUDEiterator(205): error:
no operator "<<" matches these operands
operand types are: std::ostream_iterator<int, char,
std::char_traits<char>>::ostream_type << const char *
*_Ostr << _Delim;
^
detected during:
instantiation of "std::ostream_iterator<_U, _E, _Tr>
&std::ostream_iterator<_U, _E, _Tr>::operator=(const _U &) [with _U=int,
_E=char, _Tr=std::char_traits<char>]" at line 19 of "C:Program
FilesMicrosoft Visual StudioVC98INCLUDExuti
lity"
instantiation of "_OI std::copy(_II, _II, _OI) [with _II=const
int *, _OI=std::ostream_iterator<int, char, std::char_traits<char>>]"
compilation aborted for D:X Mes Documents XMes ProgrammesVisualC++
6vector1vector.cpp (code 2)
Error executing cl.exe.

vector1.exe - 3 error(s), 0 warning(s)

Merci bcp pour l'aide fournis jusque la.
meme si cela peut te parraitre simple, j'etais perdu.
H

Avatar
heinquoi
"heinquoi" <nospam* a écrit dans le message de
news:40bbb1b3$0$21504$

ok effectivement ca marche sous mingW sous windows, et sous bcc32 . Mais
j'ai encore un souci sous Intel 8 C++


je me demande si pour l'intel 8 C++ le pb ne viendrait pas des versions de
la stl sous visual studio, elle n'est peut etre pas à jours !

1 2 3 4