16 template<
class T,
class O>
21 void insert(
T const&, O
const&);
22 bool find(
T const&
p,
size_t n,
T&, O&);
25 void remove(
T const&, O
const& );
33 void remove_from(
typename T::key_type
const& a,
typename T::mapped_type
const& b,
T &m){
34 std::pair<typename T::iterator, typename T::const_iterator> itp = m.equal_range(a);
35 for (
typename T::iterator it = itp.first; it != itp.second;) {
36 typename T::iterator it2(it);
38 if (it2->second == b) {
44 template<
class T,
class O>
46 pd2ob.insert(std::pair<T, O>(pd, ob));
47 ob2pd.insert(std::pair<O, T>(ob, pd));
50 template<
class T,
class O>
52 std::pair<typename ob2pd_map::iterator, typename ob2pd_map::iterator> itp =
ob2pd.equal_range(ob);
53 for (
typename ob2pd_map::iterator it = itp.first; it != itp.second; ++it) {
54 T const& pd = it->second;
57 ob2pd.erase(itp.first, itp.second);
60 template<
class T,
class O>
66 template<
class T,
class O>
69 typename pd2ob_map::iterator it =
pd2ob.upper_bound(p + n);
70 if (it !=
pd2ob.begin()) {
72 if ((it->first >= p) && (it->first < p +
n)) {
81 template<
class T,
class O>
84 typename pd2ob_map::iterator it =
pd2ob.find(p);
85 if (it !=
pd2ob.end()) {
int const size_t const size_t n