127 friend class iterator;
129 std::vector<int> keys_;
132 std::vector<VAL_TYPE> values_;
133 VAL_TYPE* valuesPtr_;
138template<
typename VAL_TYPE>
140 : keys_(lastKey-firstKey+1),
142 values_(lastKey-firstKey+1),
144 len_(lastKey-firstKey+1)
146 keysPtr_ = keys_.size()>0 ? &keys_[0] : NULL;
147 for(
int i=0; i<len_; ++i) {
148 keysPtr_[i] = firstKey+i;
150 valuesPtr_ = values_.size()>0 ? &values_[0] : NULL;
155template<
typename VAL_TYPE>
159 values_(src.values_),
163 keysPtr_ = keys_.size()>0 ? &keys_[0] : NULL;
164 valuesPtr_ = values_.size()>0 ? &values_[0] : NULL;
168template<
typename VAL_TYPE>
173template<
typename VAL_TYPE>
179template<
typename VAL_TYPE>
185template<
typename VAL_TYPE>
186inline std::pair<typename MapContig<VAL_TYPE>::iterator,
bool>
189 int localkey = val.first - first_;
190 if (localkey < 0 || localkey >= len_) {
191 return( std::pair<iterator,bool>(m_end_,
false) );
194 valuesPtr_[localkey] = val.second;
196 return( std::pair<iterator,bool>(iterator(localkey,
this),
true));
199template<
typename VAL_TYPE>
200inline typename MapContig<VAL_TYPE>::iterator
204 int offset = pos.offset_;
205 if (offset < 0 || offset >=len_ || pos == m_end_) {
206 offset = val.first - first_;
207 if (offset < 0 || offset >= len_) {
212 valuesPtr_[offset] = val.second;
214 return( iterator(offset,
this) );
217template<
typename VAL_TYPE>
220 int localkey = key - first_;
221 if (localkey < 0 || localkey >= len_) {
228template<
typename VAL_TYPE>
231 int localkey = key - first_;
232 if (localkey < 0 || localkey >= len_) {
239template<
typename VAL_TYPE>