Если у меня есть вектор значений и вы хотите проверить, что они все одинаковые, что лучший способ сделать это на С++ эффективно? Если бы я программировал на каком-то другом языке, например, R, один мой ум перескакивает - это возвращать только уникальные элементы контейнера, а если длина уникальных элементов больше 1, я знаю, что элементы не могут быть одинаковыми. В С++ это можно сделать следующим образом:
//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;
}
Однако, прочитав об Интернете и SO, я вижу другие ответы, например, с помощью набора или алгоритма find_if. Итак, каков наиболее эффективный способ сделать это и почему? Я считаю, что мой не лучший способ, поскольку он включает в себя сортировку каждого элемента, а затем изменение размера вектора - но, возможно, я ошибаюсь.
Спасибо, Бен.