8 #ifndef Sawyer_GraphIteratorBiMap_H
9 #define Sawyer_GraphIteratorBiMap_H
11 #include <Sawyer/GraphIteratorMap.h>
22 template<
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);
void insert(const LhsIterator &a, const RhsIterator &b)
Insert a mapping from edge or vertex a to edge or vertex b.
void clear()
Remove all entries from this container.
const ForwardMap & forward() const
Return the forward mapping.
void insert(const Key &item, const Value &value)
Insert the specified edge or vertex associated with a value.
void eraseSource(const LhsIterator &a)
Erase a pair based on the left hand side.
Holds a value or nothing.
void updateIdNumbers()
Indicate that an update is necessary due to erasures.
Name space for the entire library.
Bidirectional map of graph edge or vertex pointers.
void clear()
Remove all entries from this container.
void updateIdNumbers()
Indicate that an update is necessary due to erasures.
GraphIteratorBiMap()
Default constructor.
void erase(const Key &item)
Erase the specified key if it exists.
const ReverseMap & reverse() const
Return the reverse mapping.
GraphIteratorBiMap(const GraphIteratorBiMap< LhsIterator, U > &a, const GraphIteratorBiMap< U, RhsIterator > &b)
Construct a new map by composition of two maps.
boost::iterator_range< NodeIterator > nodes()
Iterators for container nodes.
bool exists(const Key &item) const
Does the key exist in the map?
void eraseTarget(const RhsIterator &b)
Erase a pair based on the right hand side.
Sawyer::Optional< Value > find(const Key &item) const
Find the value associated with a particular key.