Prüfen, ob alle Elemente eines Vektors in C ++ gleich sind

Wenn ich einen Vektor von Werten habe und überprüfen möchte, ob sie alle gleich sind, wie kann ich dies in C ++ effizient durchführen? Wenn ich in einer anderen Sprache wie R programmiert hätte, würde ich nur die eindeutigen Elemente des Containers zurückgeben. Wenn dann die Länge der eindeutigen Elemente mehr als 1 beträgt, dann können alle Elemente nicht gleich sein. In C ++ kann das so gemacht werden:

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

Wenn ich jedoch etwas über das Internet und SO lese, sehe ich andere Antworten, beispielsweise mithilfe eines Sets oder des find_if-Algorithmus. Was ist der effizienteste Weg und warum? Ich kann mir vorstellen, dass meine Methode nicht die beste ist, da sie das Sortieren aller Elemente und die anschließende Größenänderung des Vektors umfasst - aber vielleicht irre ich mich.

Danke, Ben.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage