Бібліотечна система
Бібліотечна система для управління книгами
Завантаження...
Пошук...
Нічого не знайдено
SearchUtility.hpp
Див. документацію.
1// SPDX-License-Identifier: Proprietary
2// Copyright © 2025 Oleksandr Dreval. All rights reserved.
3
10#ifndef SEARCH_UTILITY_HPP
11#define SEARCH_UTILITY_HPP
12
13#include <algorithm>
14#include <functional>
15#include <iterator>
16#include <memory>
17#include <span>
18#include <vector>
19
30template<typename T>
32private:
33 std::vector<T*> m_results;
34
35public:
69 static std::vector<T*> find(
70 const std::vector<std::unique_ptr<T>>& entities,
71 std::function<bool(const T*)> predicate) {
72 std::vector<T*> results;
73 std::ranges::transform(
74 entities, std::back_inserter(results), [&](const auto& item) { return item.get(); });
75 std::erase_if(results, [&predicate](auto* item) { return ! predicate(item); });
76 return results;
77 }
78
85 std::span<T const* const> getResults() const noexcept { return m_results; }
86};
87
88#endif // SEARCH_UTILITY_HPP
Шаблонний клас для пошуку елементів у колекціях
Definition SearchUtility.hpp:31
static std::vector< T * > find(const std::vector< std::unique_ptr< T > > &entities, std::function< bool(const T *)> predicate)
Виконує пошук елементів за заданим критерієм
Definition SearchUtility.hpp:69
std::span< T const *const > getResults() const noexcept
Отримує результати останнього пошуку
Definition SearchUtility.hpp:85