Мне нужно сохранить значения, подобные следующим, в структуре данных,
id x y z
0 0.1 0.1 0.1
1 0.2 0.1 0.6
2 0.01 0.3 0.1
.....
Теперь мне нужно сопоставить двойные значения x, y, z и получить соответствующее значение id(int). Мне может понадобиться хранить около 400000 значений. Какую структуру данных следует использовать для эффективного поиска? Поставляется ли C++ с какими-либо встроенными структурами, которые будут поддерживать мое требование.
struct(скажем,foo), содержащий значенияx,yиz, а также необходимые предикаты. Затем используйтеstd::map<foo, int>; предполагая, что вашidможет быть представлен какint. Поиск будет O(log N). Единственное, с чем вам придется столкнуться, — это сравнение с плавающей запятой, но это зависит от того, как возникают значения-кандидаты дляx,yиz. - person Bathsheba   schedule 16.03.2015doubles? Возможные ответы будут сильно отличаться, если вы используетеoperator==вместо чего-то вродеabs(x-y) < thresholdили чего-то еще. - person   schedule 16.03.2015