8#include <unordered_map> 
   61        cache.reserve(sizeHint);
 
 
   82            throw std::runtime_error(
"id: "+
id+
", already use in PriorityStore");
 
   86        auto pos = std::upper_bound
 
   97                return p < r.first.priority;
 
  100        cache.insert(pos, std::pair(
Info(
id, priority), s));
 
 
  109        auto pos = std::find_if
 
  113            [
id](std::pair<Info, T> v)
 
  115                return v.first.id == id;
 
  118        if (pos != 
cache.end())
 
 
  130        add(element.first, 
id, newPriority);
 
 
  143        std::multimap<Priority, ElementId> & oids
 
  146        std::vector<std::pair<Info, T>> s;
 
  147        s.reserve(oids.size());
 
  148        for (
const auto & 
id : oids)
 
  150            s.push_back(std::pair(
Info(
id.second, 
id.first), 
idToElement[
id.second].first));
 
 
  157    typename std::vector<std::pair<Info, T>>::const_iterator 
begin()
 const { 
return cache.cbegin(); }
 
  158    typename std::vector<std::pair<Info, T>>::const_iterator 
end()
 const { 
return cache.cend(); }
 
  167    std::unordered_map<ElementId, std::pair<T, Priority>> 
idToElement;
 
  169    std::vector<std::pair<Info, T>> 
cache;
 
 
Store elements in a priority ordering, with identities.
Definition priorityStore.h:32
std::vector< std::pair< Info, T > > vectorise(std::multimap< Priority, ElementId > &oids)
Return a vector from overriding priorities.
Definition priorityStore.h:142
bool hasId(const ElementId id) const
Definition priorityStore.h:162
virtual void add(T s, ElementId id, Priority priority=0)
Insert an element.
Definition priorityStore.h:78
std::vector< std::pair< Info, T > >::const_iterator end() const
Definition priorityStore.h:158
void updatePriority(ElementId id, Priority newPriority)
Definition priorityStore.h:124
uint64_t size() const
Definition priorityStore.h:160
virtual void remove(ElementId id)
Definition priorityStore.h:103
T & operator[](ElementId id)
Definition priorityStore.h:155
PriorityStore(uint64_t sizeHint=8)
Construct a new Priority Store with a reserved size.
Definition priorityStore.h:58
virtual void clear()
Definition priorityStore.h:64
std::vector< std::pair< Info, T > > cache
Definition priorityStore.h:169
std::vector< std::pair< Info, T > >::const_iterator begin() const
Definition priorityStore.h:157
std::unordered_map< ElementId, std::pair< T, Priority > > idToElement
Definition priorityStore.h:167
uint64_t Priority
A priority for an element.
Definition priorityStore.h:21
std::string ElementId
User name for an Element.
Definition priorityStore.h:15
Combine an id and a priority.
Definition priorityStore.h:40
Info()
Definition priorityStore.h:45
Priority priority
Definition priorityStore.h:50
ElementId id
Definition priorityStore.h:49
Info(ElementId i, Priority p)
Definition priorityStore.h:41