Мне нужно использовать структуру карты, которая принимает пары координат Меркатора (пользовательская структура с двумя двойными элементами, один для широты и один для долготы) в качестве ключевого типа.
Проблема в том, что координаты не всегда идеально равны, и нет простого способа исправить входные данные. Тем не менее, мне нужно найти даже близкие совпадения, скажем, в пределах одного метра друг от друга.
Координаты, которые относятся к двум различным точкам, практически никогда не находятся ближе друг к другу, чем этот порог, поэтому непреднамеренное объединение двух точек вместе не является проблемой, о которой нам нужно беспокоиться на практике.
Один подход, который я рассмотрел, — это округление координат до желаемого разрешения перед их сохранением и перед поиском. Хотя в некоторых случаях это может сработать, также могут быть случаи, когда два почти одинаковых значения оказываются по разные стороны порога и все еще различаются после округления. Их все равно нужно будет как-то решать.
Поэтому мне интересно, есть ли способ реализовать std::map (или сопоставимую структуру) таким образом, чтобы обеспечить нечеткий поиск на основе значений, находящихся в пределах определенного допуска друг от друга. Нет необходимости иметь почти идентичные записи на карте — при попытке добавить новую запись с ключом, близким к существующей записи, ключ можно (и нужно) рассматривать как уже существующий на карте.
Я не хочу добавлять в проект какие-либо новые внешние зависимости, но он уже использует Boost, любая структура, предоставленная Boost, будет работать.
Подробнее здесь: https://stackoverflow.com/questions/798 ... uzzy-match
`std::map` (или эквивалент) с нечетким совпадением ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1762092722
Anonymous
Мне нужно использовать структуру карты, которая принимает пары координат Меркатора (пользовательская структура с двумя двойными элементами, один для широты и один для долготы) в качестве ключевого типа.
Проблема в том, что координаты не всегда идеально равны, и нет простого способа исправить входные данные. Тем не менее, мне нужно найти даже близкие совпадения, скажем, в пределах одного метра друг от друга.
Координаты, которые относятся к двум различным точкам, практически никогда не находятся ближе друг к другу, чем этот порог, поэтому непреднамеренное объединение двух точек вместе не является проблемой, о которой нам нужно беспокоиться на практике.
Один подход, который я рассмотрел, — это округление координат до желаемого разрешения перед их сохранением и перед поиском. Хотя в некоторых случаях это может сработать, также могут быть случаи, когда два почти одинаковых значения оказываются по разные стороны порога и все еще различаются после округления. Их все равно нужно будет как-то решать.
Поэтому мне интересно, есть ли способ реализовать std::map (или сопоставимую структуру) таким образом, чтобы обеспечить нечеткий поиск на основе значений, находящихся в пределах определенного допуска друг от друга. Нет необходимости иметь почти идентичные записи на карте — при попытке добавить новую запись с ключом, близким к существующей записи, ключ можно (и нужно) рассматривать как уже существующий на карте.
Я не хочу добавлять в проект какие-либо новые внешние зависимости, но он уже использует Boost, любая структура, предоставленная Boost, будет работать.
Подробнее здесь: [url]https://stackoverflow.com/questions/79807174/stdmap-or-equivalent-with-fuzzy-match[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия