• Domingo 17 de Noviembre de 2024, 19:27

Autor Tema:  Conjuntos  (Leído 1454 veces)

lydia_watanabe

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Conjuntos
« en: Martes 24 de Marzo de 2009, 13:38 »
0
Hola

Estoy usando los conjuntos (set) de la STL y me gustaría hacer las siguientes operaciones própias de conjuntos: union, interseccion y diferencia.

Sé que esto ya lo he hecho antes y no sé porqué me parece que había funciones específicas para ello, pero leyendo la documentación no he encontrado nada ¿Existen métodos para hacer esto o son producto de mi imaginación?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Conjuntos
« Respuesta #1 en: Martes 24 de Marzo de 2009, 13:51 »
0

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

lydia_watanabe

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Conjuntos
« Respuesta #2 en: Martes 24 de Marzo de 2009, 14:19 »
0
Muchas gracias. Ya me parecía a mi que no podía estármelo imaginando.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Conjuntos
« Respuesta #3 en: Martes 24 de Marzo de 2009, 14:55 »
0
De nadas  :comp:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

lydia_watanabe

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Conjuntos
« Respuesta #4 en: Martes 24 de Marzo de 2009, 16:28 »
0
Por cierto ¿hay alguna manera de pasar los valores de un conjunto a un vector sin necesidad de usar un bucle?

He probado con esto, pero me da un Segmentation Fault

Código: C++
  1. copy(setdiff.begin(), setdiff.end(), vecdiff.begin());
  2.  

Donde setdiff es un conjunto de entero previamente inicializado y vecdiff es un vector de enteros recién declarado.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Conjuntos
« Respuesta #5 en: Martes 24 de Marzo de 2009, 16:46 »
0
¿No te sirve?:

vecdiff = setdiff;

Sino podrias complicarte un poco la vida asi:
Código: C++
  1. vecdiff.get_allocator().allocate(setdiff.size());
  2. copy(setdiff.begin(), setdiff.end(), vecdiff.begin());
  3.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

lydia_watanabe

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Conjuntos
« Respuesta #6 en: Martes 24 de Marzo de 2009, 17:20 »
0
Citar
¿No te sirve?:

vecdiff = setdiff;

Se supone que no, da un error de tipos (o al menos a mi me da). Gracias por el consejo, ya veré que hago

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Conjuntos
« Respuesta #7 en: Martes 24 de Marzo de 2009, 17:48 »
0
Si son dos set's del mismo tipo no entiendo la razon ... proba la segunda forma sino.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.