11 #include <forward_list>
20 template<
class Class,
typename FirstKeyType, FirstKeyType Class::*FirstKeyName,
typename SecondKeyType, SecondKeyType Class::*SecondKeyName>
24 typedef std::forward_list<Class>
Data;
36 return (*lhs).*FirstKeyName<(*rhs).*FirstKeyName;
41 return (*lhs).*FirstKeyName<rhs;
46 return lhs<(*rhs).*FirstKeyName;
57 return (*lhs).*SecondKeyName<(*rhs).*SecondKeyName;
62 return (*lhs).*SecondKeyName<rhs;
67 return lhs<(*rhs).*SecondKeyName;
96 Class&
firstAt(
const FirstKeyType& firstKey)
108 auto firstIter{
mFirstMap.find(firstKey)};
124 template<
typename... Args>
127 mData.emplace_front(std::move(args)...);
130 return mData.begin();
Container that stores expensive to construct objects and allows the fast lookup with respect to two i...
Iterator begin() noexcept
ConstIterator begin() const noexcept
ConstIterator end() const noexcept
Class & firstAt(const FirstKeyType &firstKey)
Data::const_iterator ConstIterator
Iterator firstFind(const FirstKeyType &firstKey)
std::set< Iterator, SecondCompare > mSecondMap
std::forward_list< Class > Data
Iterator emplace(Args &&... args)
Class & secondAt(const SecondKeyType &secondKey)
std::set< Iterator, FirstCompare > mFirstMap
Iterator secondFind(const SecondKeyType &secondKey)
Class to create the formulas for axioms.
Comparator that performs a heterogeneous lookup on the first key.
bool operator()(const Iterator &lhs, const Iterator &rhs) const
bool operator()(const Iterator &lhs, const FirstKeyType &rhs) const
bool operator()(const FirstKeyType &lhs, const Iterator &rhs) const
Comparator that performs a heterogeneous lookup on the second key.
bool operator()(const Iterator &lhs, const SecondKeyType &rhs) const
bool operator()(const SecondKeyType &lhs, const Iterator &rhs) const
bool operator()(const Iterator &lhs, const Iterator &rhs) const