OVH Cloud OVH Cloud

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
heinquoi
"Anthony Fleury" a écrit dans le message de
news:40bbaf63$0$13929$
heinquoi wrote:

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,


completement d'accord avec toi, mais j'ai des imperatifs de comprehension
car j'ai un exam dans 2 sem.
je dois comprendre la partie ensegné ( les contenaires de la stl), meme si
dans les exemples,il y a des notions qui me depasse.
Et de toute maniere quoi de mieux que de ce lancez a l'eau ?

je fais avec ce que j'ai.

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é.


moi aussi.

Cordialement
H

Avatar
heinquoi
Vous n'avez jamais eu de TD ?

-- Gaby


non pas ds l'uv de structure de donnée ni sur la stl
je suis en dut info par le cnam. et ce cours vient d'etre repris par un
nouveau prof, tres competant, mais un retard de 6 mois ds l'uv.
et un cours interessant mais fait a la va vite.
Et quand je me lance dedans je me dis que c'est mieux d'essayer les exemple
données... et la pb.

H

Avatar
Gabriel Dos Reis
Anthony Fleury writes:

[...]

| 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)

Pas grand chose en fait :-) Sauf que si tu ne le mets pas, cela
diminue probablement tes chances face à tes concurents qui en savent
probablement moins que toi.

| 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 dirais que c'est une force de reconnaître ses limites.

| 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++ ?

Je ne sais pas formaliser ce que c'est que d'atteindre un « bon niveau »
dans un langage comme le C++ -- certainement, je ne compte pas la
connaissance des petits recoins de la norme comme « bon niveau ».
Mais, si je vois un bon programmeur (C++), je te dire que c'en est un :-)

Cela fait à peine neuf ans que je fais du C++ -- je l'ai découvert en
même temps qu'Unix et ses petits délices :-/

-- Gaby
Avatar
Gabriel Dos Reis
"heinquoi" <nospam* writes:

| "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 <iostream>

-- Gaby
Avatar
Gabriel Dos Reis
"heinquoi" <nospam* writes:

| "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 !

Tu as inclus <iostream.h> au lieu de <iostream>

(si si, James :-))

-- Gaby
Avatar
heinquoi
"heinquoi" <nospam* a écrit dans le message de
news:40bbb286$0$21508$

"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 !


Effectivement le probleme vient de la version de iostream
pour que cela fonctionne je doit utiliser #include <iostream> et non
#include <iostream.h> qui sous VC sont des fichiers differents ( pour la
compatibilité)
H


Avatar
heinquoi
merci a tous pour leur aide et particulierement à Michel Leunen et Anthony
Fleury.
Tous les autres exemples sont sur le même modèle et on les memes erreurs, à
priori. Je vais donc pouvoir suivre et essayer les exemples.
Cordialement
H
Avatar
James Kanze
Gabriel Dos Reis writes:

|> Si on en croit l'Éducation Nationale (française), oui.
|> Si on croit l'état du Texas, je suis simplement chercheur, mais
|> accessoirement, je m'occupe aussi des étudiants en thèse et
|> j'enseigne la programmation générique.

C'est peut-être que l'Éducation Nationale française utilise le français,
et l'état de Texas l'anglais. Et que le mot français « professeur » n'a
pas du tout la même signification que le mot anglais « professor ».

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Avatar
Alain Naigeon
"James Kanze" a écrit dans le message news:

Gabriel Dos Reis writes:

|> Si on en croit l'Éducation Nationale (française), oui.
|> Si on croit l'état du Texas, je suis simplement chercheur, mais
|> accessoirement, je m'occupe aussi des étudiants en thèse et
|> j'enseigne la programmation générique.

C'est peut-être que l'Éducation Nationale française utilise le français,
et l'état de Texas l'anglais.


J'ai connu quelqu'un de Boston qui n'était pas tout à fait
de cet avis ;-)

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France

Avatar
kanze
Anthony Fleury wrote in message
news:<40bbb1dd$0$1408$...
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.


Je suis d'accord sur l'importance de la practique, mais il ne faut pas
tomber dans l'autre extrème non plus, que si ça passe avec mon
compilateur, c'est du bon C++.

| 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.


Est-ce qu'on sait apprendre ? Parce qu'il faut dire qu'au bout de deux
ans dans la vie professionnelle, la plupart des choses que tu aurais
appris à l'école seront périmée. Alors, l'importance, c'est d'apprendre
apprendre et d'apprendre comprendre. Apprendre raisonner et apprendre
s'exprimer de façon claire et concise ne seraient pas mal non plus.

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)


Mais si, mais si. Tout le monde met du C++ sur leur CV. Si on a réussi à
écrire un programme qui se compile sans erreur, et ne provoque pas de
core dump immédiate lors de son exécution, on met même « expert » en
C++.

Les vrais experts, évidemment, ne se contentent pas de dire qu'ils sont
expert. Ils parlent des programmes qu'ils ont vraiment écrits.

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.


On a toujours à apprendre avec C++. Le langage change plus vite qu'on
peut l'apprendre.

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++ ?


Ça dépend ce que tu entends par « bon niveau ». Ça fait prèsque quinze
ans que je fais du C++, et je ne comprends toujours pas les templates.
(Mais évidemment, ça ne fait pas quinze ans que je fais du C++ avec des
templates. Et je ne me suis jamais encore servi d'un compilateur qui
implémentait les templates comme c'est spécifié dans la norme.) En
revanche, au bout d'un mois, je savais assez pour être utile dans mon
équipe, et au bout de trois mois, j'écrivais réelement du C++ correct,
robuste et maintenable.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


1 2 3 4