From 3b1446f049808864e2e7825bf18f045a0d604c97 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 21 Mar 2024 10:58:38 +0100 Subject: [PATCH] refactor: add WordRefList from WordList constructor --- lib_vector_search/include/word_list.h | 2 ++ lib_vector_search/src/sorted_linear_finder.cpp | 8 ++------ lib_vector_search/src/word_list.cpp | 6 ++++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib_vector_search/include/word_list.h b/lib_vector_search/include/word_list.h index ba8b22f..3c0b5d9 100644 --- a/lib_vector_search/include/word_list.h +++ b/lib_vector_search/include/word_list.h @@ -22,6 +22,8 @@ public: class WordRefList : public std::vector { public: + WordRefList(const WordList &source); + static void find_prefix_in_range( const WordRefList &word_list, const std::string_view &search_prefix, size_t start_index, size_t end_index, diff --git a/lib_vector_search/src/sorted_linear_finder.cpp b/lib_vector_search/src/sorted_linear_finder.cpp index 6e8fbc1..3648bb2 100644 --- a/lib_vector_search/src/sorted_linear_finder.cpp +++ b/lib_vector_search/src/sorted_linear_finder.cpp @@ -1,15 +1,11 @@ #include "sorted_linear_finder.h" #include -#include using std::forward_list, std::string, std::string_view; -SortedLinearFinder::SortedLinearFinder(const WordList &word_list) { - std::transform(word_list.cbegin(), word_list.cend(), - std::back_inserter(word_list_), - [](const string &word) { return &word; }); - +SortedLinearFinder::SortedLinearFinder(const WordList &word_list) + : word_list_(word_list) { std::sort( word_list_.begin(), word_list_.end(), [](const string *left, const string *right) { return *left < *right; }); diff --git a/lib_vector_search/src/word_list.cpp b/lib_vector_search/src/word_list.cpp index dc91ede..e810451 100644 --- a/lib_vector_search/src/word_list.cpp +++ b/lib_vector_search/src/word_list.cpp @@ -77,6 +77,12 @@ void WordList::find_prefix_in_range( } }; +WordRefList::WordRefList(const WordList &source) { + for (const auto &word : source) { + push_back(&word); + } +} + void WordRefList::find_prefix_in_range( const WordRefList &word_list, const std::string_view &search_prefix, size_t start_index, size_t end_index,