C ++ - Encontrar la intersección de dos rangos
¿Cuál es la mejor manera de encontrar la intersección de dos rangos en C ++? Por ejemplo, si tengo un rango como [1 ... 20] inclusive, y otro como [13 ... 45] inclusive, quiero obtener [13 ... 20], ya que esa es la intersección entre ellos.
Pensé en usar la función de intersección de conjuntos nativos en C ++, pero primero tendría que convertir el rango en un conjunto, lo que llevaría demasiado tiempo de cálculo para valores grandes.