23 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline __stdcall
25 : cont(al),is_sorted(
true) {
28 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline __stdcall
30 : cont(n,v,al),is_sorted(
true) {
33 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline __stdcall
35 : cont(m.cont),is_sorted(m.is_sorted) {
38 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline __stdcall
40 : cont(b,e,al),is_sorted(
false) {
43 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline __stdcall
47 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline multimap<_Key,_Val,_Pred,_Cont> &
__fastcall
50 is_sorted=m.is_sorted;
54 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline void __fastcall
55 multimap<_Key,_Val,_Pred,_Cont>::sort(
void)
const {
56 std::sort(cont.begin(),cont.end(),value_compare());
60 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline void __fastcall
61 multimap<_Key,_Val,_Pred,_Cont>::sort(
void) {
62 std::sort(cont.begin(),cont.end(),value_compare());
66 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
const_iterator __fastcall
69 const_cast<
multimap<_Key,_Val,_Pred,_Cont> *>(
this)->sort();
74 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
iterator __fastcall
82 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
const_reverse_iterator __fastcall
85 const_cast<
multimap<_Key,_Val,_Pred,_Cont> *>(
this)->sort();
90 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
reverse_iterator __fastcall
98 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
const_iterator __fastcall
99 multimap<_Key,_Val,_Pred,_Cont>::
end(
void)
const noexcept(
true) {
101 const_cast<
multimap<_Key,_Val,_Pred,_Cont> *>(
this)->sort();
106 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
iterator __fastcall
114 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
const_reverse_iterator __fastcall
117 const_cast<
multimap<_Key,_Val,_Pred,_Cont> *>(
this)->sort();
122 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
reverse_iterator __fastcall
130 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline const typename multimap<_Key,_Val,_Pred,_Cont>::
size_type __fastcall
135 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline const typename multimap<_Key,_Val,_Pred,_Cont>::
size_type __fastcall
137 return cont.max_size();
140 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline bool __fastcall
145 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline void __fastcall
151 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline void __fastcall
154 cont.resize(new_sz,v);
156 is_sorted=(orig_size>=cont.size());
159 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline void __fastcall
162 cont.reserve(new_sz);
164 is_sorted=(orig_size>=cont.size());
167 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
allocator_type __fastcall
169 return cont.get_allocator();
172 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
InsertItr_ __fastcall
176 const InsertItr_ ret(std::make_pair(std::prev(cont.end()),
true));
181 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
iterator __fastcall
184 const iterator ret(cont.insert(i,v));
189 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline void __fastcall
192 cont.insert(end(),f,l);
196 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
iterator __fastcall
198 return cont.erase(i);
201 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
iterator __fastcall
203 return cont.erase(f,l);
206 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
const_iterator __fastcall
210 while (iter!=cont.begin() && !
key_compare()(
std::prev(iter)->first,iter->first) && !
key_compare()(iter->first,
std::prev(iter)->first)) {
213 assert(!key_compare()(i->first,iter->first) && !key_compare()(iter->first,i->first));
219 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
iterator __fastcall
223 while (iter!=cont.begin() && !
key_compare()(
std::prev(iter)->first,iter->first) && !
key_compare()(iter->first,
std::prev(iter)->first)) {
226 assert(!key_compare()(i->first,iter->first) && !key_compare()(iter->first,i->first));
232 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline const typename multimap<_Key,_Val,_Pred,_Cont>::
size_type __fastcall
236 iterator iter(find_first_key(std::lower_bound(cont.begin(),cont.end(),std::make_pair(key,mapped_type()),value_compare())));
237 iter!=cont.end() && !
key_compare()(key,iter->first);
238 iter=find_first_key(std::lower_bound(cont.begin(),cont.end(),std::make_pair(key,mapped_type()),value_compare()))
246 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
mapped_type &
__fastcall
251 const iterator iter(find_first_key(std::lower_bound(cont.begin(),cont.end(),std::make_pair(key,mapped_type()),value_compare())));
252 if (iter==cont.end()) {
253 cont.push_back(std::make_pair(key,mapped_type()));
255 return std::prev(cont.end())->second;
260 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
const_iterator __fastcall
263 const_cast<
multimap<_Key,_Val,_Pred,_Cont> *>(
this)->sort();
265 const const_iterator i(find_first_key(std::lower_bound(cont.begin(),cont.end(),std::make_pair(key,mapped_type()),value_compare())));
268 return is_same_key ? i : cont.end();
274 template<
typename _Key,
typename _Val,
typename _Pred,
typename _Cont>
inline typename multimap<_Key,_Val,_Pred,_Cont>::
iterator __fastcall
279 const iterator i(find_first_key(std::lower_bound(cont.begin(),cont.end(),std::make_pair(key,mapped_type()),value_compare())));
282 return is_same_key ? i : cont.end();
290 template<
typename _Key,
typename _Pred,
typename _Cont>
inline __stdcall
292 : cont(al),is_sorted(
true) {
295 template<
typename _Key,
typename _Pred,
typename _Cont>
inline __stdcall
297 : cont(n,v,al),is_sorted(
true) {
300 template<
typename _Key,
typename _Pred,
typename _Cont>
inline __stdcall
302 : cont(m.cont),is_sorted(m.is_sorted) {
305 template<
typename _Key,
typename _Pred,
typename _Cont>
inline __stdcall
307 : cont(b,e,al),is_sorted(
false) {
310 template<
typename _Key,
typename _Pred,
typename _Cont>
inline __stdcall
314 template<
typename _Key,
typename _Pred,
typename _Cont>
inline multiset<_Key,_Pred,_Cont> &
__fastcall
317 is_sorted=m.is_sorted;
321 template<
typename _Key,
typename _Pred,
typename _Cont>
inline void __fastcall
322 multiset<_Key,_Pred,_Cont>::sort(
void)
const {
323 std::sort(cont.begin(),cont.end(),value_compare());
327 template<
typename _Key,
typename _Pred,
typename _Cont>
inline void __fastcall
328 multiset<_Key,_Pred,_Cont>::sort(
void) {
329 std::sort(cont.begin(),cont.end(),value_compare());
333 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
const_iterator __fastcall
336 const_cast<
multiset<_Key,_Pred,_Cont> *>(
this)->sort();
341 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
iterator __fastcall
352 const_cast<
multiset<_Key,_Pred,_Cont> *>(
this)->sort();
354 return cont.rbegin();
357 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
reverse_iterator __fastcall
362 return cont.rbegin();
365 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
const_iterator __fastcall
368 const_cast<
multiset<_Key,_Pred,_Cont> *>(
this)->sort();
373 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
iterator __fastcall
384 const_cast<
multiset<_Key,_Pred,_Cont> *>(
this)->sort();
389 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
reverse_iterator __fastcall
397 template<
typename _Key,
typename _Pred,
typename _Cont>
inline const typename multiset<_Key,_Pred,_Cont>::
size_type __fastcall
402 template<
typename _Key,
typename _Pred,
typename _Cont>
inline const typename multiset<_Key,_Pred,_Cont>::
size_type __fastcall
404 return cont.max_size();
407 template<
typename _Key,
typename _Pred,
typename _Cont>
inline bool __fastcall
412 template<
typename _Key,
typename _Pred,
typename _Cont>
inline void __fastcall
418 template<
typename _Key,
typename _Pred,
typename _Cont>
inline void __fastcall
421 cont.resize(new_sz,v);
423 is_sorted=(orig_size>=cont.size());
426 template<
typename _Key,
typename _Pred,
typename _Cont>
inline void __fastcall
429 cont.reserve(new_sz);
431 is_sorted=(orig_size>=cont.size());
434 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
allocator_type __fastcall
436 return cont.get_allocator();
439 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
InsertItr_ __fastcall
443 const InsertItr_ ret(std::make_pair(std::prev(cont.end()),
true));
448 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
iterator __fastcall
451 const iterator ret(cont.insert(i,v));
456 template<
typename _Key,
typename _Pred,
typename _Cont>
inline void __fastcall
459 cont.insert(end(),f,l);
463 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
iterator __fastcall
465 return cont.erase(i);
468 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
iterator __fastcall
470 return cont.erase(f,l);
473 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
const_iterator __fastcall
480 assert(!key_compare()(*i,*iter) && !key_compare()(*iter,*i));
486 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
iterator __fastcall
493 assert(!key_compare()(*i,*iter) && !key_compare()(*iter,*i));
499 template<
typename _Key,
typename _Pred,
typename _Cont>
inline const typename multiset<_Key,_Pred,_Cont>::
size_type __fastcall
503 iterator iter(find_first_key(
std::lower_bound(cont.begin(),cont.end(),key,value_compare())));
505 iter=find_first_key(
std::lower_bound(cont.begin(),cont.end(),key,value_compare()))
513 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
const_iterator __fastcall
516 const_cast<
multiset<_Key,_Pred,_Cont> *>(
this)->sort();
518 const const_iterator i(find_first_key(
std::lower_bound(cont.begin(),cont.end(),key,value_compare())));
521 return is_same_key ? i : cont.end();
527 template<
typename _Key,
typename _Pred,
typename _Cont>
inline typename multiset<_Key,_Pred,_Cont>::
iterator __fastcall
532 const iterator i(find_first_key(
std::lower_bound(cont.begin(),cont.end(),key,value_compare())));
535 return is_same_key ? i : cont.end();