diff --git a/QVectorSearch/mainwindow.cpp b/QVectorSearch/mainwindow.cpp index e106b8d..9d9652f 100644 --- a/QVectorSearch/mainwindow.cpp +++ b/QVectorSearch/mainwindow.cpp @@ -48,8 +48,7 @@ void MainWindow::search(const QString &search_term) { } Timer timer; - const auto finder = createSelectedFinder(); - const auto results = finder->find_prefix(search_term.toStdString()); + const auto results = finder_->find_prefix(search_term.toStdString()); timer.stop(); std::stringstream status_message; @@ -60,18 +59,21 @@ void MainWindow::search(const QString &search_term) { showResults(results); } -std::unique_ptr MainWindow::createSelectedFinder() const { +void MainWindow::createSelectedFinder() { auto selectedFinder = ui->searchAlgorithmSelector->currentIndex(); switch (selectedFinder) { case 0: default: - return std::make_unique(word_list_); + finder_ = std::make_unique(word_list_); + break; case 1: - return std::make_unique( + finder_ = std::make_unique( word_list_, std::thread::hardware_concurrency()); + break; case 2: - return std::make_unique(word_list_); + finder_ = std::make_unique(word_list_); + break; } } @@ -90,5 +92,6 @@ void MainWindow::on_searchInput_textChanged(const QString &search_term) { } void MainWindow::on_searchAlgorithmSelector_currentIndexChanged(int) { + createSelectedFinder(); search(ui->searchInput->displayText()); } diff --git a/QVectorSearch/mainwindow.h b/QVectorSearch/mainwindow.h index 2a2f80e..0a38215 100644 --- a/QVectorSearch/mainwindow.h +++ b/QVectorSearch/mainwindow.h @@ -19,6 +19,7 @@ private: std::vector word_list_; QStringListModel result_model_; QStandardItemModel search_algorithms_; + std::unique_ptr finder_; public: MainWindow(QWidget *parent = nullptr); @@ -28,7 +29,7 @@ private: void setupAlgorithmSelector(); void generateWordList(); void search(const QString &search_term); - std::unique_ptr createSelectedFinder() const; + void createSelectedFinder(); void showResults(const std::forward_list &results); private slots: