Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con multimap

Estas en el tema de Problema con multimap en el foro de C/C++ en Foros del Web. Buenas, tngo un problemilla al intentar eliminar todos los elementos de un multimap multimap<float,pair<int,vector<int> > > P2; //ESTE ES EL MAPA lo tengo con 2 ...
  #1 (permalink)  
Antiguo 18/02/2011, 03:49
 
Fecha de Ingreso: octubre-2008
Mensajes: 91
Antigüedad: 15 años, 6 meses
Puntos: 0
Problema con multimap

Buenas, tngo un problemilla al intentar eliminar todos los elementos de un multimap

multimap<float,pair<int,vector<int> > > P2; //ESTE ES EL MAPA

lo tengo con 2 elementos, y al intentar borrarlo con esto:
P2.clear()

me da este error:

* glibc detected * ./practica3: free(): invalid next size (fast): 0×08367af8 ***

Backtrace:
/lib/libc.so.6(+0×6c501)[0×85f501]
/lib/libc.so.6(+0×6dd70)[0×860d70]
/lib/libc.so.6(cfree+0×6d)[0×863e5d]
/usr/lib/libstdc++.so.6(_ZdlPv+0×21)[0xd79441]
./practica3[0×80511cf]
./practica3[0×805326c]
/lib/libc.so.6(__libc_start_main+0xe7)[0×809ce7]
./practica3[0×8049521]

Memory map:
003aa000-003ce000 r-xp 00000000 08:05 146720 /lib/libm-2.12.1.so
003ce000-003cf000 r–p 00023000 08:05 146720 /lib/libm-2.12.1.so
003cf000-003d0000 rw-p 00024000 08:05 146720 /lib/libm-2.12.1.so
007f3000-0094a000 r-xp 00000000 08:05 146688 /lib/libc-2.12.1.so
0094a000-0094c000 r–p 00157000 08:05 146688 /lib/libc-2.12.1.so
0094c000-0094d000 rw-p 00159000 08:05 146688 /lib/libc-2.12.1.so
0094d000-00950000 rw-p 00000000 00:00 0
00a7e000-00a98000 r-xp 00000000 08:05 130641 /lib/libgcc_s.so.1
00a98000-00a99000 r–p 00019000 08:05 130641 /lib/libgcc_s.so.1
00a99000-00a9a000 rw-p 0001a000 08:05 130641 /lib/libgcc_s.so.1
00b84000-00b85000 r-xp 00000000 00:00 0 [vdso]
00ccf000-00dae000 r-xp 00000000 08:05 656479 /usr/lib/libstdc++.so.6.0.14
00dae000-00db2000 r–p 000de000 08:05 656479 /usr/lib/libstdc++.so.6.0.14
00db2000-00db3000 rw-p 000e2000 08:05 656479 /usr/lib/libstdc++.so.6.0.14
00db3000-00dba000 rw-p 00000000 00:00 0
00e46000-00e62000 r-xp 00000000 08:05 133189 /lib/ld-2.12.1.so
00e62000-00e63000 r–p 0001b000 08:05 133189 /lib/ld-2.12.1.so
00e63000-00e64000 rw-p 0001c000 08:05 133189 /lib/ld-2.12.1.so
08048000-08057000 r-xp 00000000 08:05 391821 /home/nitsuga1986/Escritorio/ALG/P3/bin/practica3
08057000-08058000 r–p 0000e000 08:05 391821 /home/nitsuga1986/Escritorio/ALG/P3/bin/practica3
08058000-08059000 rw-p 0000f000 08:05 391821 /home/nitsuga1986/Escritorio/ALG/P3/bin/practica3
08353000-08395000 rw-p 00000000 00:00 0 [heap]
b7700000-b7721000 rw-p 00000000 00:00 0
b7721000-b7800000 —p 00000000 00:00 0
b7805000-b7808000 rw-p 00000000 00:00 0
b781c000-b781f000 rw-p 00000000 00:00 0
bfdad000-bfdce000 rw-p 00000000 00:00 0 [stack]
Abortado

Os suena de algo ese error???

un saludo
  #2 (permalink)  
Antiguo 22/02/2011, 21:51
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: Problema con multimap

Lo mejor es que publiques por lo menos la parte del código donde insertas los elementos, así es difícil detectar el problema.

Por ejemplo insertando 2 elementos y utilizando clear():
Código C++:
Ver original
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <utility>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.     typedef vector<int> intVector;
  10.     typedef pair<int, intVector> myPair;
  11.  
  12.     multimap<float, myPair> p2;
  13.     p2.insert(pair<float, myPair>(0, myPair(0, intVector(10))));
  14.     p2.insert(pair<float, myPair>(0, myPair(1, intVector(10))));
  15.     cout << "before clear, size is " << p2.size() << endl;
  16.     p2.clear();
  17.     cout << "after clear, size is " << p2.size() << endl;
  18.  
  19.     return 0;
  20. }
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:07.