SMT-RAT  24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName > Class Template Reference

Container that stores expensive to construct objects and allows the fast lookup with respect to two independent keys within the objects. More...

#include <Bimap.h>

Inheritance diagram for smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >:
Collaboration diagram for smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >:

Data Structures

struct  FirstCompare
 Comparator that performs a heterogeneous lookup on the first key. More...
 
struct  SecondCompare
 Comparator that performs a heterogeneous lookup on the second key. More...
 

Public Types

typedef std::forward_list< Class > Data
 
typedef Data::iterator Iterator
 
typedef Data::const_iterator ConstIterator
 

Public Member Functions

Iterator begin () noexcept
 
ConstIterator begin () const noexcept
 
Iterator end () noexcept
 
ConstIterator end () const noexcept
 
Class & firstAt (const FirstKeyType &firstKey)
 
Class & secondAt (const SecondKeyType &secondKey)
 
Iterator firstFind (const FirstKeyType &firstKey)
 
Iterator secondFind (const SecondKeyType &secondKey)
 
template<typename... Args>
Iterator emplace (Args &&... args)
 

Private Attributes

Data mData
 
std::set< Iterator, FirstComparemFirstMap
 
std::set< Iterator, SecondComparemSecondMap
 

Detailed Description

template<class Class, typename FirstKeyType, FirstKeyType Class::* FirstKeyName, typename SecondKeyType, SecondKeyType Class::* SecondKeyName>
class smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >

Container that stores expensive to construct objects and allows the fast lookup with respect to two independent keys within the objects.

Definition at line 21 of file Bimap.h.

Member Typedef Documentation

◆ ConstIterator

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
typedef Data::const_iterator smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::ConstIterator

Definition at line 26 of file Bimap.h.

◆ Data

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
typedef std::forward_list<Class> smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::Data

Definition at line 24 of file Bimap.h.

◆ Iterator

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
typedef Data::iterator smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::Iterator

Definition at line 25 of file Bimap.h.

Member Function Documentation

◆ begin() [1/2]

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
ConstIterator smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::begin ( ) const
inlinenoexcept

Definition at line 81 of file Bimap.h.

◆ begin() [2/2]

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
Iterator smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::begin ( )
inlinenoexcept

Definition at line 76 of file Bimap.h.

◆ emplace()

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
template<typename... Args>
Iterator smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::emplace ( Args &&...  args)
inline

Definition at line 125 of file Bimap.h.

◆ end() [1/2]

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
ConstIterator smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::end ( ) const
inlinenoexcept

Definition at line 91 of file Bimap.h.

◆ end() [2/2]

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
Iterator smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::end ( )
inlinenoexcept

Definition at line 86 of file Bimap.h.

◆ firstAt()

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
Class& smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::firstAt ( const FirstKeyType &  firstKey)
inline

Definition at line 96 of file Bimap.h.

◆ firstFind()

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
Iterator smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::firstFind ( const FirstKeyType &  firstKey)
inline

Definition at line 106 of file Bimap.h.

◆ secondAt()

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
Class& smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::secondAt ( const SecondKeyType &  secondKey)
inline

Definition at line 101 of file Bimap.h.

◆ secondFind()

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
Iterator smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::secondFind ( const SecondKeyType &  secondKey)
inline

Definition at line 115 of file Bimap.h.

Field Documentation

◆ mData

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
Data smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::mData
private

Definition at line 71 of file Bimap.h.

◆ mFirstMap

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
std::set<Iterator, FirstCompare> smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::mFirstMap
private

Definition at line 72 of file Bimap.h.

◆ mSecondMap

template<class Class , typename FirstKeyType , FirstKeyType Class::* FirstKeyName, typename SecondKeyType , SecondKeyType Class::* SecondKeyName>
std::set<Iterator, SecondCompare> smtrat::Bimap< Class, FirstKeyType, FirstKeyName, SecondKeyType, SecondKeyName >::mSecondMap
private

Definition at line 73 of file Bimap.h.


The documentation for this class was generated from the following file: