On 2025-09-10 07:42, Pavel Vazharov via Boost-users wrote:
HI there,
Is there a generic radix trie container in boost which can be used for
longest prefix match?
I mean, I couldn't find one in the boost containers libraries but maybe
some library uses such a container internally and it's generic enough to be
used with types other than strings?
It started when I needed to do longest prefix match for long distance
numbers. I came up with the following based upon Aho Corasick algorithm:
https://github.com/rburkholder/trade-frame/blob/master/lib/OUCommon/KeyWordMatch.h
It could probably be made to be even more generic by replacing the char
with a templated token for comparison operations.
A use case can be seen in, where the value to lookup is an enum:
enum class EMode {
view_training, view_validate
, train_then_validate, train_then_save, train_save_validate
, load_then_validate
, train_then_run_live, load_then_run_live
, unknown
} eMode;
ou::KeyWordMatch<config::Choices::EMode> kwmMode(
config::Choices::EMode::unknown, 10 );
kwmMode.AddPattern( "view_training_data",
config::Choices::EMode::view_training );
kwmMode.AddPattern( "view_validate_data",
config::Choices::EMode::view_validate );
kwmMode.AddPattern( "train/validate",
config::Choices::EMode::train_then_validate );
choices.eMode = kwmMode.FindMatch( sMode );
above are excerpts from:
https://github.com/rburkholder/trade-frame/blob/master/SP500/Config.hpp
https://github.com/rburkholder/trade-frame/blob/master/SP500/Config.cpp
_______________________________________________
Boost-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://lists.boost.org/mailman3/lists/boost-users.lists.boost.org/
Archived at: https://lists.boost.org/archives/list/[email protected]/message/PDKR44KTO7ZP4HI3HCOKUXQTJHUTXTSG/