¿Cómo puedo comprobar si un vector es un subconjunto de otro?
-
28-09-2019 - |
Pregunta
En la actualidad, creo que mi mejor opción es utilizar std :: set_intersection, y luego comprobar si el tamaño de la entrada más pequeño es el mismo que el número de elementos ocupados por set_intersection.
¿Hay una solución mejor?
Solución
Prueba esto:
if (std::includes(set_one.begin(), set_one.end(),
set_two.begin(), set_two.end()))
{
// ...
}
La incluye () algoritmo compara dos secuencias ordenadas y devuelve true si cada elemento en el rango [start2, finish2) está contenido en el intervalo [Start1, Fin1). Devuelve falso de otra manera. incluye () asume que el secuencias están ordenadas usando operador <(), o utilizando el predicado comp.
carreras en
En la mayoría ((Fin1 - start1) + (finish2 - start2)) * 2 -. 1 se realizan comparaciones
Plus O (n log (n)) para la clasificación de vectores. No lo conseguirá más rápido que eso.