Verificando se todos os elementos de um vetor são iguais em C ++

Se eu tiver um vetor de valores e quiser verificar se eles são todos iguais, qual é a melhor maneira de fazer isso em C ++ com eficiência? Se eu estivesse programando em alguma outra linguagem como R, minha mente saltaria para retornar apenas os elementos únicos do contêiner e, em seguida, se o tamanho dos elementos únicos for maior que 1, sei que todos os elementos não podem ser os mesmos. Em C ++ isso pode ser feito assim:

//build an int vector
std::sort(myvector.begin(), myvector.end());
std::vector<int>::iterator it;
//Use unique algorithm to get the unique values.
it = std::unique(myvector.begin(), myvector.end());
positions.resize(std::distance(myvector.begin(),it));
if (myvector.size() > 1) {
    std::cout << "All elements are not the same!" << std::endl;
}

No entanto, lendo sobre a internet e, SO, vejo outras respostas, usando um conjunto ou o algoritmo find_if. Então, qual é a maneira mais eficiente de fazer isso e por quê? Eu imagino que o meu não é o melhor caminho, pois envolve classificar cada elemento e, em seguida, um redimensionamento do vetor - mas talvez eu esteja errado.

Obrigado Ben.

questionAnswers(12)

yourAnswerToTheQuestion