Шаблонний клас для пошуку елементів у колекціях
Детальніше...
#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) - лінійний обхід колекції
- Приклад використання:
std::string keyword;
std::cout << "Введіть ключове слово для пошуку: ";
std::getline(std::cin, keyword);
[&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
Документація цього класу була створена з файлу: