Muchas gracias !! Pero algo debe estar mal en el copy porque no me compila me da errores asi algo extraños de candidaturas :S :( Ademas, el profesor me dijo que no podia utilizar una clase pair heredada, sino la de stl y ahora si que me da errores cuando lo intento cambiar...... pFF :(
    
Código C++:
Ver original[.....................]
 
/*template<class T1, class T2>
class MyPair : public pair<T1, T2>{
public:
    MyPair():pair<T2, T2>::pair(){}
    MyPair(T1 t1, T2 t2):pair<T1, T2>::pair(t1, t2){}
    MyPair(const MyPair<T1, T2> &rp):pair<T1, T2>::pair(rp){ }
    friend istream& operator>>(istream& is, MyPair& pa){
        return is >> pa.first >> pa.second;
    }
 
    friend ostream& operator<<(ostream& os, const MyPair& pa){
        return os << "[" << pa.first << ", " << pa.second << "]";
    }
};
*/
template <class K, class V>
istream & operator>> (istream & is, pair<K, V>& pa)
{
    return is >> pa.first >> pa.second;
}
 
template<class K, class V>
ostream & operator<< (ostream & os, const pair<K, V> & pa)
{
    return os << "[" << pa.first << ", " << pa.second << "]";
}
 
[............]
  
Es logico que me salgan muchisimos mas errores de compilacion que antes? :S 
EDIT: ya está solucionado, era encapsular los operadores en el namespace  
MUCHISIMAS GRACIAS POR TODO FIGHTMX !!!