14 #ifndef OR_TOOLS_BASE_MAP_UTIL_H_
15 #define OR_TOOLS_BASE_MAP_UTIL_H_
25 template <
class Collection>
27 const Collection& collection,
28 const typename Collection::value_type::first_type& key,
29 const typename Collection::value_type::second_type&
value) {
30 typename Collection::const_iterator it = collection.find(key);
31 if (it == collection.end()) {
40 template <
class Collection>
41 const typename Collection::value_type::second_type*
FindOrNull(
42 const Collection& collection,
43 const typename Collection::value_type::first_type& key) {
44 typename Collection::const_iterator it = collection.find(key);
45 if (it == collection.end()) {
54 template <
class Collection>
55 typename Collection::value_type::second_type*
FindOrNull(
56 Collection& collection,
57 const typename Collection::value_type::first_type& key) {
58 typename Collection::iterator it = collection.find(key);
59 if (it == collection.end()) {
69 template <
class Collection>
71 const Collection& collection,
72 const typename Collection::value_type::first_type& key) {
73 typename Collection::const_iterator it = collection.find(key);
74 if (it == collection.end()) {
85 template <
class Collection,
class Key,
class Value>
88 std::pair<typename Collection::iterator, bool> ret =
89 collection->insert(
typename Collection::value_type(key,
value));
92 ret.first->second =
value;
102 template <
class Collection>
104 const typename Collection::value_type&
value) {
105 std::pair<typename Collection::iterator, bool> ret =
106 collection->insert(
value);
114 template <
class Collection,
class Key,
class Value>
117 std::pair<typename Collection::iterator, bool> ret =
118 collection->insert(
typename Collection::value_type(key,
value));
125 template <
class Collection>
127 const typename Collection::value_type&
value) {
134 template <
class Collection>
136 const typename Collection::value_type&
value) {
137 CHECK(collection->insert(
value).second) <<
"duplicate value: " <<
value;
142 template <
class Collection>
144 const typename Collection::value_type::first_type& key,
145 const typename Collection::value_type::second_type& data) {
146 typedef typename Collection::value_type value_type;
147 CHECK(collection->insert(value_type(key, data)).second)
148 <<
"duplicate key: " << key;
154 template <
class Collection,
class Key,
class Value>
155 bool FindCopy(
const Collection& collection,
const Key& key,
157 typename Collection::const_iterator it = collection.find(key);
158 if (it == collection.end()) {
169 template <
class Collection,
class Key>
171 typename Collection::const_iterator it = collection.find(key);
172 return it != collection.end();
175 template <
class Collection>
176 const typename Collection::value_type::second_type&
FindOrDie(
177 const Collection& collection,
178 const typename Collection::value_type::first_type& key) {
179 typename Collection::const_iterator it = collection.find(key);
180 CHECK(it != collection.end()) <<
"Map key not found: " << key;
185 template <
class Collection>
187 const Collection& collection,
188 const typename Collection::value_type::first_type& key) {
189 typename Collection::const_iterator it = collection.find(key);
190 CHECK(it != collection.end()) <<
"Map key not found";
195 template <
class Collection>
197 Collection& collection,
198 const typename Collection::value_type::first_type& key) {
199 typename Collection::iterator it = collection.find(key);
200 CHECK(it != collection.end()) <<
"Map key not found";
206 template <
class Collection>
208 Collection*
const collection,
209 const typename Collection::value_type::first_type& key,
210 const typename Collection::value_type::second_type&
value) {
211 std::pair<typename Collection::iterator, bool> ret =
212 collection->insert(
typename Collection::value_type(key,
value));
213 return ret.first->second;
216 #endif // OR_TOOLS_BASE_MAP_UTIL_H_