16 template <
class T,
class O>
21 void insert(T
const&, O
const&);
22 bool find(T
const&
p,
size_t n, T&, O&);
23 bool find(T
const&
p, 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(
54 for (
typename ob2pd_map::iterator it = itp.first; it != itp.second; ++it) {
55 T
const& pd = it->second;
58 ob2pd.erase(itp.first, itp.second);
61 template <
class T,
class O>
67 template <
class T,
class O>
70 typename pd2ob_map::iterator it = pd2ob.upper_bound(
p +
n);
71 if (it != pd2ob.begin()) {
73 if ((it->first >=
p) && (it->first <
p +
n)) {
82 template <
class T,
class O>
85 typename pd2ob_map::iterator it = pd2ob.find(
p);
86 if (it != pd2ob.end()) {
int const size_t const size_t n