<ahref="id__map_8h.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aname="l00001"></a><spanclass="lineno"> 1</span> <spanclass="comment">// Copyright 2010-2021 Google LLC</span></div><divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><divclass="line"><aname="l00003"></a><spanclass="lineno"> 3</span> <spanclass="comment">// you may not use this file except in compliance with the License.</span></div><divclass="line"><aname="l00004"></a><spanclass="lineno"> 4</span> <spanclass="comment">// You may obtain a copy of the License at</span></div><divclass="line"><aname="l00005"></a><spanclass="lineno"> 5</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00006"></a><spanclass="lineno"> 6</span> <spanclass="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><divclass="line"><aname="l00007"></a><spanclass="lineno"> 7</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00008"></a><spanclass="lineno"> 8</span> <spanclass="comment">// Unless required by applicable law or agreed to in writing, software</span></div><divclass="line"><aname="l00009"></a><spanclass="lineno"> 9</span> <spanclass="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><divclass="line"><aname="l00010"></a><spanclass="lineno"> 10</span> <spanclass="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><divclass="line"><aname="l00011"></a><spanclass="lineno"> 11</span> <spanclass="comment">// See the License for the specific language governing permissions and</span></div><divclass="line"><aname="l00012"></a><spanclass="lineno"> 12</span> <spanclass="comment">// limitations under the License.</span></div><divclass="line"><aname="l00013"></a><spanclass="lineno"> 13</span> </div><divclass="line"><aname="l00014"></a><spanclass="lineno"> 14</span> <spanclass="comment">// A faster version of flat_hash_map for Variable and LinearConstraint keys.</span></div><divclass="line"><aname="l00015"></a><spanclass="lineno"> 15</span> <spanclass="preprocessor">#ifndef OR_TOOLS_MATH_OPT_CPP_ID_MAP_H_</span></div><divclass="line"><aname="l00016"></a><spanclass="lineno"> 16</span> <spanclass="preprocessor">#define OR_TOOLS_MATH_OPT_CPP_ID_MAP_H_</span></div><divclass="line"><aname="l00017"></a><spanclass="lineno"> 17</span> </div><divclass="line"><aname="l00018"></a><spanclass="lineno"> 18</span> <spanclass="preprocessor">#include <algorithm></span></div><divclass="line"><aname="l00019"></a><spanclass="lineno"> 19</span> <spanclass="preprocessor">#include <initializer_list></span></div><divclass="line"><aname="l00020"></a><spanclass="lineno"> 20</span> <spanclass="preprocessor">#include <iterator></span></div><divclass="line"><aname="l00021"></a><spanclass="lineno"> 21</span> <spanclass="preprocessor">#include <utility></span></div><divclass="line"><aname="l00022"></a><spanclass="lineno"> 22</span> <spanclass="preprocessor">#include <vector></span></div><divclass="line"><aname="l00023"></a><spanclass="lineno"> 23</span> </div><divclass="line"><aname="l00024"></a><spanclass="lineno"> 24</span> <spanclass="preprocessor">#include "<aclass="code"href="base_2logging_8h.html">ortools/base/logging.h</a>"</span></div><divclass="line"><aname="l00025"></a><spanclass="lineno"> 25</span> <spanclass="preprocessor">#include "absl/container/flat_hash_map.h"</span></div><divclass="line"><aname="l00026"></a><spanclass="lineno"> 26</span> <spanclass="preprocessor">#include "absl/container/flat_hash_set.h"</span></div><divclass="line"><aname="l0
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a32c71b1e0da0f6dda942729e686ff021"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a32c71b1e0da0f6dda942729e686ff021">operations_research::math_opt::IdMap::SortedKeys</a></div><divclass="ttdeci">std::vector< K > SortedKeys() const</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00580">id_map.h:580</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a046ced98d9ab811471bc0554d11ae8f7"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a046ced98d9ab811471bc0554d11ae8f7">operations_research::math_opt::IdMap::raw_map</a></div><divclass="ttdeci">const StorageType & raw_map() const</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00228">id_map.h:228</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a46f3f5da665690131e8c55c053a74edb"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a46f3f5da665690131e8c55c053a74edb">operations_research::math_opt::IdMap::emplace</a></div><divclass="ttdeci">std::pair< iterator, bool > emplace(const K &k, V v)</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00426">id_map.h:426</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a3b842515d5bcf1d6e192cf461d34d4d9"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a3b842515d5bcf1d6e192cf461d34d4d9">operations_research::math_opt::IdMap< BasisStatus >::StorageType</a></div><divclass="ttdeci">absl::flat_hash_map< IdType, V > StorageType</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00057">id_map.h:57</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a37d71fb0891fee75e16038b4233842e0"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a37d71fb0891fee75e16038b4233842e0">operations_research::math_opt::IdMap::SortedValues</a></div><divclass="ttdeci">std::vector< V > SortedValues() const</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00590">id_map.h:590</a></div></div>
<divclass="ttc"id="namespaceoperations__research_1_1math__opt_html_a5de89a1f6e3f80a49a0d76136d8044e2"><divclass="ttname"><ahref="namespaceoperations__research_1_1math__opt.html#a5de89a1f6e3f80a49a0d76136d8044e2">operations_research::math_opt::swap</a></div><divclass="ttdeci">void swap(IdMap< K, V >&a, IdMap< K, V >&b)</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00263">id_map.h:263</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_aebef55688b8839353becd13a90991d14"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#aebef55688b8839353becd13a90991d14">operations_research::math_opt::IdMap::equal_range</a></div><divclass="ttdeci">std::pair< iterator, iterator > equal_range(const K &k)</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00524">id_map.h:524</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_af06312c57a13d74c59e9de84129c54a1"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#af06312c57a13d74c59e9de84129c54a1">operations_research::math_opt::IdMap::find</a></div><divclass="ttdeci">iterator find(const K &k)</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00511">id_map.h:511</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a1f21a7e0831fbbbf41d210083b036ebc"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a1f21a7e0831fbbbf41d210083b036ebc">operations_research::math_opt::IdMap::operator[]</a></div><divclass="ttdeci">V & operator[](const K &k)</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00493">id_map.h:493</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_1_1const__iterator_html_aa3dd489bfdd876bb42a0a0325cf2a2e4"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map_1_1const__iterator.html#aa3dd489bfdd876bb42a0a0325cf2a2e4">operations_research::math_opt::IdMap::const_iterator::operator++</a></div><divclass="ttdeci">const_iterator & operator++()</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00329">id_map.h:329</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_ab2a3f17d02b118e3876034e67fdef6d3"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#ab2a3f17d02b118e3876034e67fdef6d3">operations_research::math_opt::IdMap::at</a></div><divclass="ttdeci">const V & at(const K &k) const</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00481">id_map.h:481</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a5d60d42abc8fc6015ed122642adb5115"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a5d60d42abc8fc6015ed122642adb5115">operations_research::math_opt::IdMap::try_emplace</a></div><divclass="ttdeci">std::pair< iterator, bool > try_emplace(const K &k, Args &&... args)</div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a6542635c5cd89b07a74f8c4fbf1cfede"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a6542635c5cd89b07a74f8c4fbf1cfede">operations_research::math_opt::IdMap::Values</a></div><divclass="ttdeci">std::vector< V > Values(absl::Span< const K > keys) const</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00560">id_map.h:560</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_af9c906d8c2564fb8a30586c4eee7fe90"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#af9c906d8c2564fb8a30586c4eee7fe90">operations_research::math_opt::IdMap< BasisStatus >::reference</a></div><divclass="ttdeci">std::pair< const BasisStatus, V &> reference</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00063">id_map.h:63</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a74afb7a67eefb0cb7998daad12124d14"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a74afb7a67eefb0cb7998daad12124d14">operations_research::math_opt::IdMap::contains</a></div><divclass="ttdeci">bool contains(const K &k) const</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00505">id_map.h:505</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_1_1iterator_html_ab64167ed4f8bd013a85822880e4ce8a5"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map_1_1iterator.html#ab64167ed4f8bd013a85822880e4ce8a5">operations_research::math_opt::IdMap::iterator::operator++</a></div><divclass="ttdeci">iterator & operator++()</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00288">id_map.h:288</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_a3a5189ee6812baa491f3ece1b29539d9"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#a3a5189ee6812baa491f3ece1b29539d9">operations_research::math_opt::IdMap::erase</a></div><divclass="ttdeci">int erase(const K &k)</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00446">id_map.h:446</a></div></div>
<divclass="ttc"id="namespaceoperations__research_html"><divclass="ttname"><ahref="namespaceoperations__research.html">operations_research</a></div><divclass="ttdoc">Collection of objects used to extend the Constraint Solver library.</div><divclass="ttdef"><b>Definition:</b><ahref="dense__doubly__linked__list_8h_source.html#l00021">dense_doubly_linked_list.h:21</a></div></div>
<divclass="ttc"id="classoperations__research_1_1math__opt_1_1_id_map_html_aadbc60aa5bb39b0af2b8bfd72a29ad1d"><divclass="ttname"><ahref="classoperations__research_1_1math__opt_1_1_id_map.html#aadbc60aa5bb39b0af2b8bfd72a29ad1d">operations_research::math_opt::IdMap::count</a></div><divclass="ttdeci">size_type count(const K &k) const</div><divclass="ttdef"><b>Definition:</b><ahref="id__map_8h_source.html#l00499">id_map.h:499</a></div></div>