Sortiervektor von Objekten für die binäre Suche

Ich habe folgende Klasse:

struct EdgeExtended {
    int neighborNodeId;
    int weight;
    int arrayPointer;
    bool isCrossEdge;

};

Ich möchte einen Vektor solcher Objekte haben, sortiere ihn nach neighbourNodeId. Dann möchte ich nach einer bestimmten neighbourNodeId suchen und durch binäre Suche einen Verweis auf das gefundene Objekt innerhalb des Vektors zurückgeben. Früher habe ich dafür eine Karte verwendet, also war es ungefähr so:

map<int, EdgeExtended> neighbours;
.....

auto it = neighbours.find(dnodeId);
if (it != neighbours.end()) {
    edgeMap = it->second; 
}

Anstatt

map<int, EdgeExtended> neighbours;

Ich möchte haben

vector<EdgeExtended> neighbours;

und behalte so viel wie der alte Code gleich.

Ich möchte ein Benchmarking durchführen, wenn der Vektor schneller als die Karte ist, da ich Tausende von Vektoren (oder Karten) erstelle und jeder Vektor (Karte) relativ klein ist (~ 10 Elemente). Ich weiß nicht, wie man a) Objekte nach neighbourNodeId sortierbar macht und b) wie man eine binäre Suche verwendet, die nach einem bestimmten Mitglied der Klasse (neighbourNodeId) sucht. Entschuldigung für die Noob-Frage. Ich zähle auf Ihre Hilfe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage