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;
}

2 réponses

1 2 3 4
Avatar
kanze
Gabriel Dos Reis wrote in message
news:...
"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 :-))


Je n'ai rien contre qu'on le dise quand c'est la vraie erreur, comme
c'est le cas ici.

Aussi, si on tient à utiliser les nouveautés comme les
[io]stream_iterator, c'est mieux d'utiliser ce qui est nouveau partout.
Je trouve normal qu'un implémenteur fournit un <iostream.h> compatible
avec l'ancien pour faire marcher le code existant, mais je ne démande
pas qu'il le fasse marcher avec les [io]stream_iterator en plus. Au
moins qu'il ait sortie des versions du compilateur où ça avait marché.

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

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


enlèves le // ou ajoutes std:: devant les types ostream, vector, etc...
Et avant de poster dans un forum, va en cours ;-)


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;
}




1 2 3 4