4 #ifndef BASE_MAP_UTIL_H
5 #define BASE_MAP_UTIL_H
16 template <
typename ForwardIterator,
21 ForwardIterator __first2, ForwardIterator __last2,
22 AddFunctor __add_fn, DelFunctor __del_fn,
24 while (__first1 != __last1 && __first2 != __last2) {
25 if (__first1->first < __first2->first) {
28 }
else if (__first1->first > __first2->first) {
32 __eq_fn(__first1, __first2);
37 for (; __first1 != __last1; ++__first1) {
40 for (; __first2 != __last2; ++__first2) {
54 template <
typename MapType,
55 typename ForwardIterator,
60 void map_difference(MapType *map, ForwardIterator first, ForwardIterator last,
61 CompFunctor comp_fn, AddFunctor add_fn,
62 DelFunctor del_fn, EqFunctor eq_fn) {
63 typename MapType::iterator it1 = map->begin(), next1 = map->begin();
64 ForwardIterator it2 = first;
65 while (it1 != map->end() && it2 != last) {
66 int result = comp_fn(it1, it2);
71 }
else if (result > 0) {
81 for (next1 = it1; it1 != map->end(); it1 = next1) {
85 for (; it2 != last; ++it2) {
101 template <
typename MapType,
typename AddFunctor,
typename DelFunctor>
103 AddFunctor add_fn, DelFunctor del_fn) {
104 typename MapType::iterator it1 = map1->begin(), next1 = map1->begin();
105 typename MapType::const_iterator it2 = map2->begin();
106 while (it1 != map1->end() && it2 != map2->end()) {
107 if (it1->first < it2->first) {
111 }
else if (it1->first > it2->first) {
120 for (next1 = it1; it1 != map1->end(); it1 = next1) {
124 for (; it2 != map2->end(); ++it2) {
129 #endif // BASE_MAP_UTIL_H
void map_difference(ForwardIterator __first1, ForwardIterator __last1, ForwardIterator __first2, ForwardIterator __last2, AddFunctor __add_fn, DelFunctor __del_fn, EqFunctor __eq_fn)
void map_synchronize(MapType *map1, const MapType *map2, AddFunctor add_fn, DelFunctor del_fn)