Сортировать вектор объектов для бинарного поиска
У меня есть следующий класс:
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 элементов). Я не знаю, как: а) сделать объекты сортируемыми по соседству и б) как использовать бинарный поиск, который ищет определенного члена класса (соседа по имени). Извините за вопрос нуба. Я рассчитываю на вашу помощь.