eliminar entradas duplicadas en vectores

Estoy tratando de agregar objetos usando la clase (Muestra), ordenar mi vector y luego eliminar las entradas duplicadas en mi vector.

Mis códigos (esto es solo parte de mis códigos en mi programa)

vector<Sample> sampleVector;
sort(sampleVector.begin(), sampleVector.end());
sampleVector.erase(std::unique(sampleVector.begin(),sampleVector.end(),sampleVector.end()));

Pero sin embargo, cuando intenté ejecutar mi programa muestra este error.

Type 'std::__1::__wrap_iter<Sample *>' does not provide a call operator

y me di cuenta de que lo más probable es que el error sea causado por esta línea

sampleVector.erase(std::unique(sampleVector.begin(),sampleVector.end(),sampleVector.end()));

¿Qué debo hacer para que funcione para eliminar entradas duplicadas en mi vector? gracias por adelantado

Otra cosa que he intentado pero no está funcionando.

bool myfunction (Sample *i,Sample *j) {
   return (i==j);
}

std::vector<Sample>::iterator it;
vector<Sample> sampleVector;
it = std::unique(sampleVector.begin(), sampleVector.end(),myfunction);   
for (it=sampleVector.begin(); it!=sampleVector.end(); ++it) {
            std::cout << *it << " "; <-- error must change it to &*it
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta