std::map
использует само сбалансированное дерево (например, красно-черное дерево), поэтому нет смысла повторно его реализовывать.
Сортировка std::vector
с двоичным поиском имеет ту же производительностьсбалансированное бинарное дерево.Разница в том, что размещение ключа в середине вектора стоит дорого.
Поскольку у ваших ключей очень ограниченный диапазон, ваш лучший выбор аналогичен первому предложению:
std::vector<unsigned char *> data(0xFF); // no need to have a pair
Таким образом, простая проверка data[key] == NULL
показывает, существуют ли данные для этого ключа или нет.Если бы это был я, я бы даже упростил это:
unsigned char *data[0xFF];