vorrei usare le funzioni set_difference , union ecc.. sui due vettori di input mappa1 e mappa2 e mettere i risultati in mappaFinale.

codice:
typedef map<int, object*> intV;  
intV mappa1, mappa2, mappaFinale;

mappa1[0] = new object A(0, 0,0, "testo stringa0")
mappa1[2] = new object A(2, 2,2, "testo stringa2")
mappa1[4] = new object A(4, 4,4, "testo stringa4")

mappa2[0] = new object A(2, 4,5, "testo stringa0seconda")
mappa2[2] = new object A(2, 4,5, "testo stringa1seconda")
mappa2[4] = new object A(2, 4,5, "testo stringa4seconda")

cosi:
	intV::iterator it = mappafinale.begin();
	set_difference(mappa1.begin(),mappa1.end(),mappa2.begin(),mappa2.end(),                  
insert_iterator<intV>(mappafinale,it));


	vector<int>::iterator itOut;
	for(itOut= mappaFinale.begin();itOut!= mappaFinale.end();++itOut)
		std::cout << *itOut<< "\n";
in base pero' all' indice , ovvero tenere conto dell indicemappa1 / indicemappa2 e non dei dati(svariati e non relativi alle funzioni di insiemi dell std di object).

come si puo fare?
grazie.