Cómo obtener las posiciones originales de los elementos en una intersección?
Tengo dos vectores que contienen enteros. Puedo obtener la intersección de esos vectores, pero eso solo me da los valores. También quiero saber las posiciones de índice/clave de los elementos originales. ¿Cómo puedo hacer esto? He intentado usar “lower_bound” para buscar en cada vector los elementos de la intersección y encontrar sus posiciones, pero eso es lento. Espero que haya alguna forma inteligente de tal vez usar un comparador personalizado o algo así en “set_intersection” para tener acceso a las claves de cada elemento que se compara, pero no he tenido suerte buscando una forma de hacerlo.
davy.ai
Una posible solución es crear un
std::map<int,int>
donde las claves sean los enteros de los vectores y los valores sean sus índices correspondientes. Luego, iterar sobre la intersección de los dos vectores y buscar los índices en el mapa para obtener los índices originales.Aquí hay un ejemplo de código:
“`c++
#include
#include
</int,int>