12 template <
class Key,
class Relation>
14 requires(Relation r, Key a, Key b) { { std::invoke(r, a, b) } -> std::same_as<std::strong_ordering>; }
15 ||
requires(Relation r, Key a, Key b) { { std::invoke(r, a, b) } -> std::convertible_to<bool>; };
19 template<
class KeyT,
class ValT,
class Pred = std::less<>>
20 requires strong_order_relation<KeyT, Pred>
35 struct PairComparator {
38 template <
class LookupKeyT>
39 constexpr bool operator()(
const value_type& pair,
const LookupKeyT& key)
const {
40 return std::invoke(_comp, pair.first, key);
43 template <
class LookupKeyT>
44 constexpr bool operator()(
const LookupKeyT& key,
const value_type& pair)
const {
45 return std::invoke(_comp, key, pair.first);
49 template <
class LookupKeyT>
50 constexpr iterator find_position(
const LookupKeyT& key);
52 template <
class LookupKeyT>
53 constexpr const_iterator find_position(
const LookupKeyT& key)
const;
55 template <
class LookupKeyT>
56 constexpr bool is_equivalent(
const_iterator it,
const LookupKeyT& key)
const;
70 constexpr
bool operator==(const
LinearMap& other) const;
82 [[nodiscard]] constexpr
bool empty() const;
85 template <class LookupKeyT, class MappedT>
88 template <class LookupKeyT, class MappedT>
91 template <class LookupKeyT>
92 constexpr
bool erase(const LookupKeyT& key);
98 template <class LookupKeyT>
101 template <class LookupKeyT>
104 template <class LookupKeyT>
105 constexpr
bool exists(const LookupKeyT& key) const;
107 template <class LookupKeyT>
108 constexpr
bool contains(const LookupKeyT& key) const;
110 template <class LookupKeyT>
111 ValT& operator[](LookupKeyT&& key);
115#include <Thoth/Dsa/LinearMap.tpp>
Definition LinearMap.hpp:13
Definition LinearMap.hpp:21
constexpr LinearMap()=default
constexpr bool empty() const
constexpr std::pair< iterator, bool > try_emplace(LookupKeyT &&key, MappedT &&val)
constexpr LinearMap(LinearMap &&)=default
constexpr LinearMap & operator=(LinearMap &&) noexcept
constexpr const_iterator cend() const
std::pair< KeyT, ValT > value_type
Definition LinearMap.hpp:24
ValT mapped_type
Definition LinearMap.hpp:23
constexpr const_iterator cbegin() const
container_type::iterator iterator
Definition LinearMap.hpp:27
std::vector< value_type > container_type
Definition LinearMap.hpp:26
constexpr iterator begin()
container_type::size_type size_type
Definition LinearMap.hpp:29
constexpr iterator find(const LookupKeyT &key)
constexpr std::pair< iterator, bool > insert_or_assign(LookupKeyT &&key, MappedT &&val)
constexpr LinearMap(std::initializer_list< value_type > init, const key_compare &comp=key_compare{})
Pred key_compare
Definition LinearMap.hpp:25
constexpr bool contains(const LookupKeyT &key) const
constexpr bool exists(const LookupKeyT &key) const
constexpr LinearMap(const LinearMap &)=default
constexpr bool erase(const LookupKeyT &key)
constexpr LinearMap(const key_compare &comp)
KeyT key_type
Definition LinearMap.hpp:22
constexpr size_type size() const
container_type::const_iterator const_iterator
Definition LinearMap.hpp:28
constexpr LinearMap & operator=(const LinearMap &)