refactor: add WordRefList from WordList constructor

This commit is contained in:
Michael Mandl 2024-03-21 10:58:38 +01:00
parent 95cc7223e8
commit 3b1446f049
Signed by: mandlm
GPG key ID: 4AA25D647AA54CC7
3 changed files with 10 additions and 6 deletions

View file

@ -22,6 +22,8 @@ public:
class WordRefList : public std::vector<const std::string *> {
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,

View file

@ -1,15 +1,11 @@
#include "sorted_linear_finder.h"
#include <algorithm>
#include <iterator>
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; });

View file

@ -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,