Бібліотечна система
Бібліотечна система для управління книгами
Завантаження...
Пошук...
Нічого не знайдено
Шаблон класу SearchUtility< T >

Шаблонний клас для пошуку елементів у колекціях Детальніше...

#include <SearchUtility.hpp>

Загальнодоступні елементи

std::span< T const *const > getResults () const noexcept
 Отримує результати останнього пошуку
 

Загальнодоступні статичні елементи

static std::vector< T * > find (const std::vector< std::unique_ptr< T > > &entities, std::function< bool(const T *)> predicate)
 Виконує пошук елементів за заданим критерієм
 

Детальний опис

template<typename T>
class SearchUtility< T >

Шаблонний клас для пошуку елементів у колекціях

Параметри шаблона
TТип елементів колекції, має підтримувати семантику вказівників

Клас надає:

  • Статичні методи для пошуку за предикатом
  • Зберігання результатів пошуку
  • Інтерфейс для отримання результатів

Опис методів компонент

◆ find()

template<typename T >
static std::vector< T * > SearchUtility< T >::find ( const std::vector< std::unique_ptr< T > > &  entities,
std::function< bool(const T *)>  predicate 
)
inlinestatic

Виконує пошук елементів за заданим критерієм

Аргументи
entitiesВектор унікальних вказівників на об'єкти для пошуку
predicateФункція-предикат для фільтрації (приймає const T*)
Повертає
Вектор сирих вказівників на об'єкти, що задовольняють предикат
Обробка виняткових ситуацій
std::bad_allocПри проблемах з виділенням пам'яті
Нотатки
Не змінює вхідні дані, повертає нову колекцію
Застереження
Повертає вказівники на об'єкти, якими володіють unique_ptr з entities @complexity O(n) - лінійний обхід колекції
Приклад використання:
void handleSearchBooks(const Storage& library) {
std::string keyword;
std::cout << "Введіть ключове слово для пошуку: ";
std::getline(std::cin, keyword);
auto results = SearchUtility<Book>::find(
library.getBooks(),
[&keyword](const Book* book) { return book->search(keyword); });
if (results.empty()) {
std::cout << "Книги за ключовим словом '" << keyword << "' не знайдено.\n";
} else {
std::cout << "Знайдено " << results.size() << " книг:\n";
for (const auto* book : results) {
book->display();
}
}
}
Клас, що представляє книгу в бібліотечній системі
Definition Book.hpp:46
static std::vector< T * > find(const std::vector< std::unique_ptr< T > > &entities, std::function< bool(const T *)> predicate)
Виконує пошук елементів за заданим критерієм
Definition SearchUtility.hpp:69
Клас, що реалізує центральне сховище даних про книги
Definition Storage.hpp:32
const std::vector< std::unique_ptr< Book > > & getBooks() const noexcept
Повертає посилання на колекцію книг
Definition Storage.hpp:125
void handleSearchBooks(const Storage &library)
Обробляє інтерфейс користувача для пошуку книг.
Definition main.cpp:821

◆ getResults()

template<typename T >
std::span< T const *const > SearchUtility< T >::getResults ( ) const
inlinenoexcept

Отримує результати останнього пошуку

Повертає
Константний діапазон на вектор результатів
Нотатки
Повертає діапазон на внутрішній стан об'єкта
Застереження
Не слід зберігати діапазон довше за життя об'єкта SearchUtility

Документація цього класу була створена з файлу: