Stl : trier un fichier de données et insérer une valeur dans le fichier trié

Soyez le premier à donner votre avis sur cette source.

Vue 8 331 fois - Téléchargée 336 fois

Description

Le programme présente comment utiliser les itérateurs adaptateurs pour lier
un flux de données fichier à un vector, puis utilise les fonctions de <Algoritm> pour opérer simplement sur les données du fichier.

L'exemple ci dessous se limite au trie.
Dans le zip, le projet complet en Visual6 est disponible :
- un programme trie les données et les enregistre,
- l'autre insère une valeur dans le fichier trié.

Source / Exemple :


//-------------Utiliser la STL pour Trier un fichier ----------------------
//  	Met en oeuvre
//		 - les R/W formatees
//		 - les iterateurs adtapteurs
//		 - le conteneur vector
//		 - les fonctions generiques de Algorithm
//-------------------  David Saint-Mellion  03/02/2003 -----------------

#include <iostream>
#include <fstream>		
#include <vector>		
#include <algorithm>  // copy(),sort()
//#include <iterator>  // ostream_iterator, istream_iterator, back_inserter()
using namespace std ;

int main(void){
	// Definit un flux fichier en R
	ifstream fichierCoteR;
	// Definit un flux fichier en W
	ofstream fichierCoteW;
	// Definit un vector de flottants
	vector<float> vecCote;
	// Definit un iterateur adaptateur pour ecrire dans le fichier
	// le separateur des donnees est \n
	ostream_iterator<float> fichierW(fichierCoteW,"\n");
	// Definit un iterateur adaptateur pour afficher sur la sortie standard
	ostream_iterator<float> ecran(cout," ");

	// Ouvre le fichier en R
 	fichierCoteR.open("piece.dat"); 
	// Lit le fichier et insere les valeurs dans le vector
	// en le faisant grossir
	copy(istream_iterator<float>(fichierCoteR),
                       istream_iterator<float>(),
                       back_inserter(vecCote) // Insere à la fin du vector
	       );
	// Affiche la sequence Non Triee
	copy(vecCote.begin(),vecCote.end(), ecran);
	cout<<endl;
	
	// Ordonne les objets du vector dans l'ordre croissant
	sort(vecCote.begin(),vecCote.end());
	// Affiche la séquence Triee
	copy(vecCote.begin(),vecCote.end(), ecran);
	cout<< endl;
		// Ferme le fichier
	fichierCoteR.close();
	
	// Ouvre le fichier en W avec destruction des donnees
 	fichierCoteW.open("piece_t.dat");
	// Copie le vector dans le flux fichiers
	copy(vecCote.begin(),vecCote.end(), fichierW);
	cout<< endl;

	return 0;
}

// -------------------- Fonctions et iterateurs utilises -----------------------
//  itrOutput copy(itrInput prem, itrInput der, itrOutput destination)
//     Copie une sequence ailleurs (3ème argument)
//
//  void sort(itrRandomAccess prem, itrRandomAccess der)
//     Trie une séquence dans l'ordre croissant
//
//  itrBackInsert (Conteneur &conteneur)
//    Iterateur adaptateur pour l'insertion d'un objet à la fin du conteneur
//  ostream_iterator<Type> identifiant(IntanceFluxW,Chaine de separateurs)
//    Iterateur adaptateur pour ecrire dans les flux
//  istream_iterator<Type> identifiant(IntanceFluxR)
//    Iterateur adaptateur pour lire les flux
//     Par défaut, EOF est geree pour les 2 derniers iterateurs

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
35
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
12 novembre 2004

Je vois pas quelle relation il y a entre ce source et la référence que tu donnes : http://perso.wanadoo.fr/carlov/cours/chap2/linked_list.html autant sur la forme que le fond. Peut être que j'ai mal vu .

Par contre, si tu trouves des sources similaires ( couplage flux et conteneur par itr adaptateurs) ç'a m'interesse car je n'ai pas vu grand chose.
Messages postés
35
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
12 novembre 2004

Je vois pas quelle relation il y a entre ce source et la référence que tu donnes : http://perso.wanadoo.fr/carlov/cours/chap2/linked_list.html autant sur la forme que le fond. Peut être que j'ai mal vu .

Par contre, si tu trouves des sources similaires ( couplage flux et conteneur par itr adaptateurs) ç'a m'interesse car je n'ai pas vu grand chose.
Messages postés
2
Date d'inscription
mardi 25 septembre 2001
Statut
Membre
Dernière intervention
4 février 2003

mon ami c pas ton boulot .
kan tu veux tricher change au moins les noms des variables ou les valeurs des exemples

http://perso.wanadoo.fr/carlov/cours/chap2/linked_list.html

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.