• Domingo 15 de Diciembre de 2024, 15:48

Autor Tema:  Contenedores y estructuras  (Leído 848 veces)

enyell

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Contenedores y estructuras
« en: Domingo 27 de Julio de 2008, 22:09 »
0
Hola !!!

Necesito alguna pista-ayuda porque le he dado mil vueltas y no consigo encontrar la solución...  :wacko:

Estoy haciendo una simulación de enrutamientos IP con un programa de software libre llamado Omnet que está basado en C++. Cada router tiene que construir su propia tabla de enrutamiento en función de los datos que sus vecinos le van pasando.

En un principio utilicé un contenedor de tipo "map<int,int>" para almacenar los datos de la tabla y que me los relacionase : destino- puerto de salida para alcanzar ese vecino.  Pero tengo que añadir otro argumento y que me lo relacione con los dos anteriores, y el contenedor "map" solo relaciona datos por parejas. Es decir, necesito que me asocie los tres datos:

destino - puerto de salida -  métrica

Intenté que funcionase haciendo que uno de los argumentos del contenedor map fuese una estructura:
Código: Text
  1. struct datostabla
  2.   {           int metrica;  
  3.                int idpuerto;
  4.     }dtabla;
  5. typedef std::map<int, datostabla>TablaEnrutamiento;
  6.  
  7.  

Pero al construir la tabla de enrutamiento según le van llegando datos al router la estructura machaca los anteriores y los sobrescribe:

Debería ser así:
 TABLA ENRUTAMIENTO----- ROUTER : router[1]
 DIRECCION DESTINO : 4   ID DEL PUERTO DE SALIDA : 7     METRICA:1

 TABLA ENRUTAMIENTO----- ROUTER : router[1]
 DIRECCION DESTINO : 4   ID DEL PUERTO DE SALIDA : 7     METRICA:1
 DIRECCION DESTINO : 6   ID DEL PUERTO DE SALIDA : 8     METRICA:1

 TABLA ENRUTAMIENTO----- ROUTER : router[1]
 DIRECCION DESTINO : 4   ID DEL PUERTO DE SALIDA : 7     METRICA:1
 DIRECCION DESTINO : 6   ID DEL PUERTO DE SALIDA : 8     METRICA:1
 DIRECCION DESTINO : 8   ID DEL PUERTO DE SALIDA : 9    METRICA:1

Y sin embargo el resultado es:
TABLA ENRUTAMIENTO----- ROUTER : router[1]
 DIRECCION DESTINO : 4   ID DEL PUERTO DE SALIDA : 7     METRICA:1

 TABLA ENRUTAMIENTO----- ROUTER : router[1]
 DIRECCION DESTINO : 4   ID DEL PUERTO DE SALIDA : 8     METRICA:1
 DIRECCION DESTINO : 6   ID DEL PUERTO DE SALIDA : 8     METRICA:1

 TABLA ENRUTAMIENTO----- ROUTER : router[1]
 DIRECCION DESTINO : 4   ID DEL PUERTO DE SALIDA : 9      METRICA:1
DIRECCION DESTINO : 6    ID DEL PUERTO DE SALIDA : 9      METRICA:1
 DIRECCION DESTINO : 8   ID DEL PUERTO DE SALIDA : 9      METRICA:1


No sé como podría construir esta tabla de enrutamiento asociando los tres datos y sin que los datos de la estructura no se sobrescribieran según vaya llegando la nueva información...


Muchas gracias!!!

Salu2