Сортировать вектор объектов для бинарного поиска

У меня есть следующий класс:

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

};

Я хочу, чтобы вектор таких объектов, сортировать его по соседству. Затем я хочу найти конкретный код узла и вернуть ссылку на найденный объект внутри вектора с помощью бинарного поиска. Ранее я использовал карту для этого, так что это было что-то вроде этого:

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

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

Вместо

map<int, EdgeExtended> neighbours;

я хочу иметь

vector<EdgeExtended> neighbours;

и сохранить столько же, сколько старый код тот же.

Я хочу сравнить, если вектор быстрее, чем карта, так как я строю тысячи векторов (или карт), и каждый вектор (карта) относительно мал (~ 10 элементов). Я не знаю, как: а) сделать объекты сортируемыми по соседству и б) как использовать бинарный поиск, который ищет определенного члена класса (соседа по имени). Извините за вопрос нуба. Я рассчитываю на вашу помощь.

Ответы на вопрос(2)

Ваш ответ на вопрос