SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: lydia_watanabe en Martes 24 de Marzo de 2009, 13:38

Título: Conjuntos
Publicado por: lydia_watanabe en Martes 24 de Marzo de 2009, 13:38
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?
Título: Re: Conjuntos
Publicado por: Eternal Idol en Martes 24 de Marzo de 2009, 13:51
Aca estan las funciones que buscas (de la biblioteca algorithm):

http://mictlan.utm.mx/html/jaws/html/in ... /conjuntos (http://mictlan.utm.mx/html/jaws/html/indexf6bd.html?page/conjuntos" onclick="window.open(this.href);return false;)
http://www.cplusplus.com/reference/algorithm/ (http://www.cplusplus.com/reference/algorithm/" onclick="window.open(this.href);return false;)
Título: Re: Conjuntos
Publicado por: lydia_watanabe en Martes 24 de Marzo de 2009, 14:19
Muchas gracias. Ya me parecía a mi que no podía estármelo imaginando.
Título: Re: Conjuntos
Publicado por: Eternal Idol en Martes 24 de Marzo de 2009, 14:55
De nadas  :comp:
Título: Re: Conjuntos
Publicado por: lydia_watanabe en Martes 24 de Marzo de 2009, 16:28
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.
Título: Re: Conjuntos
Publicado por: Eternal Idol en Martes 24 de Marzo de 2009, 16:46
¿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.  
Título: Re: Conjuntos
Publicado por: lydia_watanabe en Martes 24 de Marzo de 2009, 17:20
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
Título: Re: Conjuntos
Publicado por: Eternal Idol en Martes 24 de Marzo de 2009, 17:48
Si son dos set's del mismo tipo no entiendo la razon ... proba la segunda forma sino.