Vérifier si tous les éléments d'un vecteur sont égaux en C++

Si j'ai un vecteur de valeurs et que vous souhaitez vérifier qu'ils sont tous les mêmes, quelle est la meilleure façon de le faire en C++ de manière efficace? Si je ont été de programmation dans un autre langage comme le R d'une façon mes esprits des sauts est à retourner uniquement les éléments du conteneur et puis si la longueur des éléments uniques de plus de 1, je sais que tous les éléments ne peuvent pas être les mêmes. En C++, ce qui peut être fait comme ceci:

//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;
}

Cependant la lecture sur internet et DONC, je vois d'autres réponses telles que l'utilisation d'un jeu ou de la find_if algorithme. Alors, quel est le moyen le plus efficace de le faire et pourquoi? J'imagine que le mien n'est pas la meilleure façon puisqu'il s'agit de tri de chaque élément, puis un redimensionnement du vecteur - mais peut-être que je me trompe.

Grâce,
Ben.

InformationsquelleAutor Ward9250 | 2013-11-29