#include #include #include #include #include #include <stdio.h> <map> <list> <string> <set> <algorithm> using namespace std; main() { map<string,list<string> > indice; indice["arbol"].push_back("doc1"); indice["arbol"].push_back("doc2"); indice["auto"].push_back("doc3"); indice["casa"].push_back("doc1"); indice["casa"].push_back("doc3"); indice["ciudad"].push_back("doc3"); indice["pueblo"].push_back("doc1"); indice["pueblo"].push_back("doc2"); printf("Consulta: documentos que contengan casa y auto \n"); // calculo de la solucion set<string> lista_casa; lista_casa.insert( indice["casa"].begin(), indice["casa"].end() ); set<string> lista_auto; lista_auto.insert( indice["auto"].begin(), indice["auto"].end() ); set<string> resultado; insert_iterator< set<string, less<string> > > iter(resultado,resultado.begin()); set_intersection(lista_casa.begin(),lista_casa.end(), lista_auto.begin(),lista_auto.end(), iter ); for( set<string>::iterator it= resultado.begin(); it != resultado.end(); it++ ) { printf("doc: %s \n", it->c_str() ); } }