8#ifndef Sawyer_GraphIteratorBiMap_H
9#define Sawyer_GraphIteratorBiMap_H
11#include <Sawyer/GraphIteratorMap.h>
22template<
class LhsIterator,
class RhsIterator>
43 BOOST_FOREACH (
const typename ForwardMap::Node &anode, a.forward_.
nodes()) {
44 if (b.forward_.
exists(anode.value())) {
45 const RhsIterator &target = b.forward_[anode.value()];
46 insert(anode.key(), target);
65 void insert(
const LhsIterator &a,
const RhsIterator &b) {
78 reverse_.
erase(*found);
86 forward_.
erase(*found);
Bidirectional map of graph edge or vertex pointers.
void clear()
Remove all entries from this container.
void eraseTarget(const RhsIterator &b)
Erase a pair based on the right hand side.
GraphIteratorBiMap(const GraphIteratorBiMap< LhsIterator, U > &a, const GraphIteratorBiMap< U, RhsIterator > &b)
Construct a new map by composition of two maps.
void insert(const LhsIterator &a, const RhsIterator &b)
Insert a mapping from edge or vertex a to edge or vertex b.
void updateIdNumbers()
Indicate that an update is necessary due to erasures.
const ForwardMap & forward() const
Return the forward mapping.
void eraseSource(const LhsIterator &a)
Erase a pair based on the left hand side.
const ReverseMap & reverse() const
Return the reverse mapping.
GraphIteratorBiMap()
Default constructor.
Map of graph edge or vertex pointers to some other value.
void erase(const Key &item)
Erase the specified key if it exists.
void updateIdNumbers()
Indicate that an update is necessary due to erasures.
bool exists(const Key &item) const
Does the key exist in the map?
boost::iterator_range< NodeIterator > nodes()
Iterators for container nodes.
void insert(const Key &item, const Value &value)
Insert the specified edge or vertex associated with a value.
Sawyer::Optional< Value > find(const Key &item) const
Find the value associated with a particular key.
void clear()
Remove all entries from this container.
Holds a value or nothing.