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.

Respuestas a la pregunta(3)

Su respuesta a la pregunta