CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
OdMultimap.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2022, Open Design Alliance (the "Alliance").
3// All rights reserved.
4//
5// This software and its documentation and related materials are owned by
6// the Alliance. The software may only be incorporated into application
7// programs owned by members of the Alliance, subject to a signed
8// Membership Agreement and Supplemental Software License Agreement with the
9// Alliance. The structure and organization of this software are the valuable
10// trade secrets of the Alliance and its suppliers. The software is also
11// protected by copyright law and international treaty provisions. Application
12// programs incorporating this software must include the following statement
13// with their copyright notices:
14//
15// This application incorporates Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2022 by Open Design Alliance.
18// All rights reserved.
19//
20// By use of this software, its documentation or related materials, you
21// acknowledge and accept the above terms.
23
24
25
26
27#ifndef OD_MULTIMAP_H
28#define OD_MULTIMAP_H
29
30#define STL_USING_MAP
31#include "OdaSTL.h"
32
33#include "OdPlatform.h"
34
45template<class Key,
46 class T,
47 class Pred = OD_TYPENAME std::less<Key>,
48 class A = OD_TYPENAME2 std::allocator<OD_TYPENAME2 std::pair<const Key, T> > >
49class OdMultimap : public std::multimap<Key, T, Pred, A>
50{
51public:
52 typedef typename std::multimap<Key, T, Pred, A>::iterator iterator;
53 typedef typename std::multimap<Key, T, Pred, A>::const_iterator const_iterator;
54
55 // 01.06.2002 G. Udov trying to eliminate using static variables
56
57 OdMultimap(const Pred& comp = Pred(), const A& al = A())
58 : std::multimap<Key, T, Pred, A>(comp, al) {}
59
60 OdMultimap(const typename std::multimap<Key, T, Pred, A>::value_type *first,
61 const typename std::multimap<Key, T, Pred, A>::value_type *last,
62 const Pred& comp = Pred(),
63 const A& al = A())
64 : std::multimap<Key, T, Pred, A>(first, last, comp, al) {}
65
70 iterator find_ex(const Key& key)
71 {
72 iterator i = find (key),
73 iend = this->end();
74 while (i != iend && !this->key_comp() (key, i->first))
75 {
76 if (i->first == key)
77 return i;
78 ++i;
79 }
80 return iend;
81 }
82
87 const_iterator find_ex(const Key& key) const
88 {
89 const_iterator i = find (key),
90 iend = this->end();
91 while (i != iend && !this->key_comp() (key, i->first))
92 {
93 if (i->first == key)
94 return i;
95 ++i;
96 }
97 return iend;
98 }
99
104 iterator find_last(const Key& key)
105 {
106 iterator i = find (key), j,
107 iend = this->end();
108 while (i != iend && !this->key_comp() (key, i->first))
109 {
110 j = i;
111 ++i;
112 }
113 return j;
114 }
115};
116
117
118#endif // OD_MULTIMAP_H
119
#define OD_TYPENAME2
Definition: OdPlatform.h:635
#define OD_TYPENAME
Definition: OdPlatform.h:631
OdMultimap(const typename std::multimap< Key, T, Pred, A >::value_type *first, const typename std::multimap< Key, T, Pred, A >::value_type *last, const Pred &comp=Pred(), const A &al=A())
Definition: OdMultimap.h:60
const_iterator find_ex(const Key &key) const
Definition: OdMultimap.h:87
std::multimap< Key, T, Pred, A >::const_iterator const_iterator
Definition: OdMultimap.h:53
iterator find_last(const Key &key)
Definition: OdMultimap.h:104
OdMultimap(const Pred &comp=Pred(), const A &al=A())
Definition: OdMultimap.h:57
std::multimap< Key, T, Pred, A >::iterator iterator
Definition: OdMultimap.h:52
iterator find_ex(const Key &key)
Definition: OdMultimap.h:70