1 #ifndef DataFormats_Common_RangeMap_h
2 #define DataFormats_Common_RangeMap_h
46 typedef std::pair<unsigned int, unsigned int>
pairType;
50 typedef std::pair<const_iterator, const_iterator>
range;
54 template <
typename CMP>
74 template <
typename CMP>
76 std::pair<typename mapType::const_iterator, typename mapType::const_iterator>
r =
77 std::equal_range(
map_.begin(),
map_.end(),
id, comp<CMP>(comparator));
79 if ((r.first) ==
map_.end()) {
81 return std::make_pair(begin, end);
85 if ((r.second) ==
map_.end()) {
90 return std::make_pair(begin, end);
93 template <
typename CMP>
94 range get(std::pair<ID, CMP>
p)
const {
95 return get(
p.first,
p.second);
100 typename mapType::const_iterator
i =
map_.find(
id);
101 if (i !=
map_.end()) {
107 return std::make_pair(begin, end);
110 template <
typename CI>
112 typename mapType::const_iterator
i =
map_.find(
id);
113 if (i !=
map_.end()) {
168 for (
typename mapType::iterator it =
map_.begin(), itEnd =
map_.end(); it != itEnd; it++) {
169 range r =
get((*it).first);
171 unsigned int begIt =
static_cast<unsigned int>(tmp.size());
174 unsigned int endIt =
static_cast<unsigned int>(tmp.size());
175 it->second =
pairType(begIt, endIt);
182 id_iterator
id_end()
const {
return id_iterator(
map_.end()); }
186 std::vector<ID>
ids()
const {
212 collection_.swap(other.collection_);
213 map_.swap(other.map_);
216 template <
typename ID,
typename C,
typename P>
224 template <
typename ID,
typename C,
typename P>
C collection_
stored collection
void post_insert()
perfor post insert action
const edm::EventSetup & c
std::pair< const_iterator, const_iterator > range
iterator range
id_iterator & operator++()
uint16_t *__restrict__ id
id_iterator id_begin() const
first identifier iterator
mapType map_
identifier map
void swap(RangeMap< ID, C, P > &other)
swap member function
size_t size() const
return number of contained object
C::const_iterator begin() const
first collection iterator
bool operator==(const id_iterator &ci) const
reference operator[](size_type i)
direct access to an object in the collection
id_iterator id_end() const
last identifier iterator
#define CMS_CLASS_VERSION(_version_)
mapType::const_iterator::iterator_category iterator_category
id_iterator & operator--()
const ID operator*() const
U second(std::pair< T, U > const &p)
C::const_iterator const_iterator
constant access iterator type
Container::value_type value_type
std::pair< unsigned int, unsigned int > pairType
index range
id_iterator operator++(int)
bool operator()(ID id, const typename mapType::value_type &p)
void put(ID id, CI begin, CI end)
insert an object range with specified identifier
ptrdiff_t difference_type
C::reference reference
reference type
std::map< ID, pairType > mapType
map of identifier to index range
id_iterator(const_iterator o)
mapType::const_iterator const_iterator
std::pair< OmniClusterRef, TrackingParticleRef > P
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
size_t id_size() const
number of contained identifiers
bool operator!=(const id_iterator &ci) const
RangeMap()
default constructor
C::value_type value_type
contained object type
std::vector< ID > ids() const
indentifier vector
bool operator()(const typename mapType::value_type &p, ID id)
RangeMap & operator=(RangeMap const &rhs)
copy assignment
C::const_iterator end() const
last collection iterator
C::pointer pointer
pointer type
id_iterator operator--(int)
C::size_type size_type
collection size type