Creacion de registros al azar:
 
//creacion registros al azar
 
#include <iostream.h>
#include <map.h>
#include<stdio.h>
#include <time.h>
#include<conio.h>
using namespace std;
typedef unsigned int direc;
typedef unsigned int dni;
void inserta(map<dni,direc,less<dni> >&,dni,direc);
void buscar(map<dni,direc,less<dni> >,dni,direc &);
void guarda(map<dni,direc,less<dni> >);
void creacion(map<dni,direc,less<dni> >&,int cuantos);
FILE *pclave;
FILE *datos;
FILE *indice;
FILE * lapila;
typedef struct ficha
{
   dni clave;
   char apellido[40];
   char nombre [30];
   int antiguedad;
   int kms;
   int importe;
}PERSONA;
 
void main (void)
{
randomize();
clrscr();
int max;
dni busc;
direc registro;
PERSONA tmp;
lapila=fopen("lapila.txt","w+b");
fclose(lapila);
datos=fopen("datos.txt","w+b");
map<dni, direc, less<dni> > m;
map<dni, direc, less<dni> >::iterator pos;
cout <<"cuantos registros deseas crear?:"<<endl;
cin >> max;
creacion(m,max);
indice=fopen("indice.txt","w+b");
fprintf(indice,"%d %d\n",max,0);
fclose(indice);
guarda(m);
fclose(datos);
fclose(indice);
fclose(pclave);
 
}// fin de main
 
void inserta(map<dni,direc,less<dni> >& m,dni alfa,direc beta)
{
 m.insert(pair<dni,direc>(alfa,beta));
 
}  // fin de inserta
void buscar(map<dni,direc,less<dni> > m,dni alfa,direc & registro)
{
 
   map<dni, direc, less<dni> >::iterator i;
   map<dni, direc, less<dni> >::iterator j;
   i=m.find(alfa);
 
   if (i!=m.end())
          registro= (*i).second;
   else
        registro= 0;
 
 
} // fin de busca
 
void guarda(map<dni,direc,less<dni> > m)
{
map<dni, direc, less<dni> >::iterator inicio,final;
inicio=m.begin();
final=m.end();
pclave=fopen("claves.txt","w+b");
for(inicio=m.begin();inicio!=m.end();inicio++)
  fprintf(pclave,"%d %d\n",(*inicio).first,(*inicio).second);
} // fin de guarda
 
void creacion(map<dni,direc,less<dni> >& m,int cuantos)
{
dni d1;
direc d2;
int t;
PERSONA tmp;
 
char nom[10][30]={"Jose","David","Pedro","Maria","Carlos","Susana","Vicente","Manuel","Sergio","Ana"};
char apel[10][30]={"Garcia","Gonzalez","Martinez","Perez","Alvarez","Gimeno","Vazquez","Madrid","Rodriguez","Calvo"};
 
// Introducción de elementos
   cout <<"creando....."<< endl;
   for (t=1;t<=cuantos;t++)
      {
      do
      {
       d1=random(99000000)+ 1;
         d2=t;
      }while (m.find(d1)!=m.end());
   // inserto en el mapa
      inserta (m,d1,t);
   // inserto en el archivo
   strcpy(tmp.nombre,nom[random(10)]);
   strcpy(tmp.apellido,apel[random(10)]);
   tmp.antiguedad=random(40)+1;
   tmp.kms=random(5000)+200;
   tmp.importe=random(800)+20;
   
   tmp.clave=d1;
   fseek(datos,(d2-1)*sizeof(PERSONA),0);
  fwrite(&tmp,sizeof(PERSONA),1,datos);
   //if (d1 % 100000==0)
   //    cout << d1<<endl;
   }
   cout <<"creado...."<<endl;
} // fin de creacion