310 lines
38 KiB
HTML
310 lines
38 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>OR-Tools</title>
|
|
<meta http-equiv="Content-Type" content="text/html;"/>
|
|
<meta charset="utf-8"/>
|
|
<!--<link rel='stylesheet' type='text/css' href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>-->
|
|
<link rel="stylesheet" type="text/css" href="ortools.css" title="default" media="screen,print" />
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="banner-container">
|
|
<div id="banner">
|
|
<span id="sfml">OR-Tools 7.2</span>
|
|
</div>
|
|
</div>
|
|
<link rel="icon" href="https://developers.google.com/optimization/images/orLogo.png">
|
|
<div id="content">
|
|
<!-- Generated by Doxygen 1.8.15 -->
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="navrow2" class="tabs2">
|
|
<ul class="tablist">
|
|
<li><a href="files.html"><span>File List</span></a></li>
|
|
<li><a href="globals.html"><span>File Members</span></a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_a7cc1eeded8f693d0da6c729bc88c45a.html">ortools</a></li><li class="navelem"><a class="el" href="dir_725f3a5915051842f84e3ea508be2a62.html">graph</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Classes</a> |
|
|
<a href="#namespaces">Namespaces</a> |
|
|
<a href="#define-members">Macros</a> |
|
|
<a href="#typedef-members">Typedefs</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">graph.h File Reference</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="textblock"><code>#include <algorithm></code><br />
|
|
<code>#include <cstddef></code><br />
|
|
<code>#include <cstdlib></code><br />
|
|
<code>#include <limits></code><br />
|
|
<code>#include <new></code><br />
|
|
<code>#include <vector></code><br />
|
|
<code>#include "ortools/base/integral_types.h"</code><br />
|
|
<code>#include "ortools/base/logging.h"</code><br />
|
|
<code>#include "ortools/base/macros.h"</code><br />
|
|
<code>#include "<a class="el" href="iterators_8h_source.html">ortools/graph/iterators.h</a>"</code><br />
|
|
</div><div class="textblock"><div class="dynheader">
|
|
Include dependency graph for graph.h:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="graph_8h__incl.png" border="0" usemap="#graph_8h" alt=""/></div>
|
|
<map name="graph_8h" id="graph_8h">
|
|
<area shape="rect" title=" " alt="" coords="378,5,443,32"/>
|
|
<area shape="rect" title=" " alt="" coords="5,87,80,114"/>
|
|
<area shape="rect" title=" " alt="" coords="105,87,170,114"/>
|
|
<area shape="rect" title=" " alt="" coords="194,87,254,114"/>
|
|
<area shape="rect" title=" " alt="" coords="279,87,332,114"/>
|
|
<area shape="rect" title=" " alt="" coords="357,87,403,114"/>
|
|
<area shape="rect" title=" " alt="" coords="684,169,743,196"/>
|
|
<area shape="rect" title=" " alt="" coords="479,80,617,121"/>
|
|
<area shape="rect" title=" " alt="" coords="641,87,791,114"/>
|
|
<area shape="rect" title=" " alt="" coords="815,87,966,114"/>
|
|
<area shape="rect" href="iterators_8h.html" title=" " alt="" coords="990,87,1149,114"/>
|
|
<area shape="rect" title=" " alt="" coords="1038,169,1101,196"/>
|
|
</map>
|
|
</div>
|
|
</div><div class="textblock"><div class="dynheader">
|
|
This graph shows which files directly or indirectly include this file:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="graph_8h__dep__incl.png" border="0" usemap="#graph_8hdep" alt=""/></div>
|
|
<map name="graph_8hdep" id="graph_8hdep">
|
|
<area shape="rect" title=" " alt="" coords="241,5,306,32"/>
|
|
<area shape="rect" href="christofides_8h.html" title=" " alt="" coords="37,80,137,107"/>
|
|
<area shape="rect" href="io_8h.html" title=" " alt="" coords="161,80,204,107"/>
|
|
<area shape="rect" href="max__flow_8h.html" title=" " alt="" coords="229,80,318,107"/>
|
|
<area shape="rect" href="min__cost__flow_8h.html" title=" " alt="" coords="343,80,460,107"/>
|
|
<area shape="rect" href="util_8h.html" title=" " alt="" coords="484,80,535,107"/>
|
|
<area shape="rect" href="one__tree__lower__bound_8h.html" title=" " alt="" coords="5,155,168,181"/>
|
|
</map>
|
|
</div>
|
|
</div>
|
|
<p><a href="graph_8h_source.html">Go to the source code of this file.</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
|
Classes</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1SVector.html">util::SVector< T ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forward declaration. <a href="classutil_1_1SVector.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph< NodeIndexType, ArcIndexType, HasReverseArcs ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Base class of all Graphs implemented here. <a href="classutil_1_1BaseGraph.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ListGraph.html">util::ListGraph< NodeIndexType, ArcIndexType ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Basic graph implementation without reverse arc. <a href="classutil_1_1ListGraph.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph.html">util::StaticGraph< NodeIndexType, ArcIndexType ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Most efficient implementation of a graph without reverse arcs: <a href="classutil_1_1StaticGraph.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcListGraph.html">util::ReverseArcListGraph< NodeIndexType, ArcIndexType ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Extends the <a class="el" href="classutil_1_1ListGraph.html" title="Basic graph implementation without reverse arc.">ListGraph</a> by also storing the reverse arcs. <a href="classutil_1_1ReverseArcListGraph.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcStaticGraph.html">util::ReverseArcStaticGraph< NodeIndexType, ArcIndexType ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classutil_1_1StaticGraph.html" title="Most efficient implementation of a graph without reverse arcs:">StaticGraph</a> with reverse arc. <a href="classutil_1_1ReverseArcStaticGraph.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcMixedGraph.html">util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">This graph is a mix between the <a class="el" href="classutil_1_1ReverseArcListGraph.html" title="Extends the ListGraph by also storing the reverse arcs.">ReverseArcListGraph</a> and the <a class="el" href="classutil_1_1ReverseArcStaticGraph.html" title="StaticGraph with reverse arc.">ReverseArcStaticGraph</a>. <a href="classutil_1_1ReverseArcMixedGraph.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1SVector.html">util::SVector< T ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forward declaration. <a href="classutil_1_1SVector.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ListGraph_1_1OutgoingArcIterator.html">util::ListGraph< NodeIndexType, ArcIndexType >::OutgoingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ListGraph_1_1OutgoingHeadIterator.html">util::ListGraph< NodeIndexType, ArcIndexType >::OutgoingHeadIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1StaticGraph_1_1OutgoingArcIterator.html">util::StaticGraph< NodeIndexType, ArcIndexType >::OutgoingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcListGraph_1_1OutgoingArcIterator.html">util::ReverseArcListGraph< NodeIndexType, ArcIndexType >::OutgoingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcListGraph_1_1OppositeIncomingArcIterator.html">util::ReverseArcListGraph< NodeIndexType, ArcIndexType >::OppositeIncomingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcListGraph_1_1IncomingArcIterator.html">util::ReverseArcListGraph< NodeIndexType, ArcIndexType >::IncomingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcListGraph_1_1OutgoingOrOppositeIncomingArcIterator.html">util::ReverseArcListGraph< NodeIndexType, ArcIndexType >::OutgoingOrOppositeIncomingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcListGraph_1_1OutgoingHeadIterator.html">util::ReverseArcListGraph< NodeIndexType, ArcIndexType >::OutgoingHeadIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcStaticGraph_1_1OutgoingArcIterator.html">util::ReverseArcStaticGraph< NodeIndexType, ArcIndexType >::OutgoingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcStaticGraph_1_1OppositeIncomingArcIterator.html">util::ReverseArcStaticGraph< NodeIndexType, ArcIndexType >::OppositeIncomingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcStaticGraph_1_1IncomingArcIterator.html">util::ReverseArcStaticGraph< NodeIndexType, ArcIndexType >::IncomingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcStaticGraph_1_1OutgoingOrOppositeIncomingArcIterator.html">util::ReverseArcStaticGraph< NodeIndexType, ArcIndexType >::OutgoingOrOppositeIncomingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcMixedGraph_1_1OutgoingArcIterator.html">util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OutgoingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcMixedGraph_1_1OppositeIncomingArcIterator.html">util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OppositeIncomingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcMixedGraph_1_1IncomingArcIterator.html">util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::IncomingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1ReverseArcMixedGraph_1_1OutgoingOrOppositeIncomingArcIterator.html">util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OutgoingOrOppositeIncomingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteGraph.html">util::CompleteGraph< NodeIndexType, ArcIndexType ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classutil_1_1CompleteGraph.html" title="CompleteGraph implementation ---------------------------------------------— Nodes and arcs are implic...">CompleteGraph</a> implementation ---------------------------------------------— Nodes and arcs are implicit and not stored. <a href="classutil_1_1CompleteGraph.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteBipartiteGraph.html">util::CompleteBipartiteGraph< NodeIndexType, ArcIndexType ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classutil_1_1CompleteBipartiteGraph.html" title="CompleteBipartiteGraph implementation ------------------------------------— Nodes and arcs are implic...">CompleteBipartiteGraph</a> implementation ------------------------------------— Nodes and arcs are implicit and not stored. <a href="classutil_1_1CompleteBipartiteGraph.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteBipartiteGraph_1_1OutgoingArcIterator.html">util::CompleteBipartiteGraph< NodeIndexType, ArcIndexType >::OutgoingArcIterator</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
|
|
Namespaces</h2></td></tr>
|
|
<tr class="memitem:namespaceutil"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html">util</a></td></tr>
|
|
<tr class="memdesc:namespaceutil"><td class="mdescLeft"> </td><td class="mdescRight">Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. <br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
|
Macros</h2></td></tr>
|
|
<tr class="memitem:a48a8a7aa004fc40d0d1d0ba63311cece"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="graph_8h.html#a48a8a7aa004fc40d0d1d0ba63311cece">DEFINE_RANGE_BASED_ARC_ITERATION</a>(c, t, e)</td></tr>
|
|
<tr class="memdesc:a48a8a7aa004fc40d0d1d0ba63311cece"><td class="mdescLeft"> </td><td class="mdescRight">Macros to wrap old style iteration into the new range-based for loop style. <a href="#a48a8a7aa004fc40d0d1d0ba63311cece">More...</a><br /></td></tr>
|
|
<tr class="separator:a48a8a7aa004fc40d0d1d0ba63311cece"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa560f5e55268f818d5e5f43ed31e19a0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="graph_8h.html#aa560f5e55268f818d5e5f43ed31e19a0">DEFINE_STL_ITERATOR_FUNCTIONS</a>(iterator_class_name)</td></tr>
|
|
<tr class="memdesc:aa560f5e55268f818d5e5f43ed31e19a0"><td class="mdescLeft"> </td><td class="mdescRight">Adapt our old iteration style to support range-based for loops. <a href="#aa560f5e55268f818d5e5f43ed31e19a0">More...</a><br /></td></tr>
|
|
<tr class="separator:aa560f5e55268f818d5e5f43ed31e19a0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
|
|
Typedefs</h2></td></tr>
|
|
<tr class="memitem:ae76339cb2dcd3bc05ad762146f91fdda"><td class="memItemLeft" align="right" valign="top">typedef ListGraph </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#ae76339cb2dcd3bc05ad762146f91fdda">util::Graph</a></td></tr>
|
|
<tr class="memdesc:ae76339cb2dcd3bc05ad762146f91fdda"><td class="mdescLeft"> </td><td class="mdescRight">Defining the simplest Graph interface as Graph for convenience. <a href="namespaceutil.html#ae76339cb2dcd3bc05ad762146f91fdda">More...</a><br /></td></tr>
|
|
<tr class="separator:ae76339cb2dcd3bc05ad762146f91fdda"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:a9470623ca7db3c4a62ce3b326c6b07d8"><td class="memTemplParams" colspan="2">template<class IntVector , class Array , class ElementType > </td></tr>
|
|
<tr class="memitem:a9470623ca7db3c4a62ce3b326c6b07d8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a9470623ca7db3c4a62ce3b326c6b07d8">util::PermuteWithExplicitElementType</a> (const IntVector &permutation, Array *array_to_permute, ElementType unused)</td></tr>
|
|
<tr class="memdesc:a9470623ca7db3c4a62ce3b326c6b07d8"><td class="mdescLeft"> </td><td class="mdescRight">Permutes the elements of array_to_permute: element #i will be moved to position permutation[i]. <a href="namespaceutil.html#a9470623ca7db3c4a62ce3b326c6b07d8">More...</a><br /></td></tr>
|
|
<tr class="separator:a9470623ca7db3c4a62ce3b326c6b07d8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8c227a057c1ce9d46b1185abf77ad91e"><td class="memTemplParams" colspan="2">template<class IntVector , class Array > </td></tr>
|
|
<tr class="memitem:a8c227a057c1ce9d46b1185abf77ad91e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a8c227a057c1ce9d46b1185abf77ad91e">util::Permute</a> (const IntVector &permutation, Array *array_to_permute)</td></tr>
|
|
<tr class="separator:a8c227a057c1ce9d46b1185abf77ad91e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac497881c4166bc694adc4bee62746118"><td class="memTemplParams" colspan="2">template<class IntVector > </td></tr>
|
|
<tr class="memitem:ac497881c4166bc694adc4bee62746118"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceutil.html#ac497881c4166bc694adc4bee62746118">util::Permute</a> (const IntVector &permutation, std::vector< bool > *array_to_permute)</td></tr>
|
|
<tr class="memdesc:ac497881c4166bc694adc4bee62746118"><td class="mdescLeft"> </td><td class="mdescRight">We need a specialization for std::vector<bool>, because the default code uses (*array_to_permute)[0] as ElementType, which isn't 'bool' in that case. <a href="namespaceutil.html#ac497881c4166bc694adc4bee62746118">More...</a><br /></td></tr>
|
|
<tr class="separator:ac497881c4166bc694adc4bee62746118"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a37be0131ae922e30a286797a0bef0c96"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a37be0131ae922e30a286797a0bef0c96">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ListGraph, Outgoing, Base::kNilArc)</td></tr>
|
|
<tr class="memdesc:a37be0131ae922e30a286797a0bef0c96"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classutil_1_1ListGraph.html" title="Basic graph implementation without reverse arc.">ListGraph</a> implementation -------------------------------------------------—. <a href="namespaceutil.html#a37be0131ae922e30a286797a0bef0c96">More...</a><br /></td></tr>
|
|
<tr class="separator:a37be0131ae922e30a286797a0bef0c96"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af3c40fc068f645d9dcd15c332e44fc25"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#af3c40fc068f645d9dcd15c332e44fc25">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (StaticGraph, Outgoing, DirectArcLimit(node))</td></tr>
|
|
<tr class="memdesc:af3c40fc068f645d9dcd15c332e44fc25"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classutil_1_1StaticGraph.html" title="Most efficient implementation of a graph without reverse arcs:">StaticGraph</a> implementation -----------------------------------------------—. <a href="namespaceutil.html#af3c40fc068f645d9dcd15c332e44fc25">More...</a><br /></td></tr>
|
|
<tr class="separator:af3c40fc068f645d9dcd15c332e44fc25"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3098e161a6aceeca482be78d2d221b3b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a3098e161a6aceeca482be78d2d221b3b">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcListGraph, Outgoing, Base::kNilArc)</td></tr>
|
|
<tr class="memdesc:a3098e161a6aceeca482be78d2d221b3b"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classutil_1_1ReverseArcListGraph.html" title="Extends the ListGraph by also storing the reverse arcs.">ReverseArcListGraph</a> implementation ---------------------------------------—. <a href="namespaceutil.html#a3098e161a6aceeca482be78d2d221b3b">More...</a><br /></td></tr>
|
|
<tr class="separator:a3098e161a6aceeca482be78d2d221b3b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4d0ae05975a2063f2edbeb749f690fc7"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a4d0ae05975a2063f2edbeb749f690fc7">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcListGraph, Incoming, Base::kNilArc)</td></tr>
|
|
<tr class="separator:a4d0ae05975a2063f2edbeb749f690fc7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a22b5dcc01043ab8da01ebab71ec3ad31"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a22b5dcc01043ab8da01ebab71ec3ad31">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcListGraph, OutgoingOrOppositeIncoming, Base::kNilArc)</td></tr>
|
|
<tr class="separator:a22b5dcc01043ab8da01ebab71ec3ad31"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a863ccdb51afb5ef92fe6c94188a5f7e0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a863ccdb51afb5ef92fe6c94188a5f7e0">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcListGraph, OppositeIncoming, Base::kNilArc)</td></tr>
|
|
<tr class="separator:a863ccdb51afb5ef92fe6c94188a5f7e0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a2cc2a1037195d237820edc97d35404be"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a2cc2a1037195d237820edc97d35404be">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcStaticGraph, Outgoing, DirectArcLimit(node))</td></tr>
|
|
<tr class="memdesc:a2cc2a1037195d237820edc97d35404be"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classutil_1_1ReverseArcStaticGraph.html" title="StaticGraph with reverse arc.">ReverseArcStaticGraph</a> implementation -------------------------------------—. <a href="namespaceutil.html#a2cc2a1037195d237820edc97d35404be">More...</a><br /></td></tr>
|
|
<tr class="separator:a2cc2a1037195d237820edc97d35404be"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a2a51d676cd5d9354bfe1f80d09c44f39"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a2a51d676cd5d9354bfe1f80d09c44f39">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcStaticGraph, Incoming, ReverseArcLimit(node))</td></tr>
|
|
<tr class="separator:a2a51d676cd5d9354bfe1f80d09c44f39"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1db1a919e67261878ff8abda53e664c7"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a1db1a919e67261878ff8abda53e664c7">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcStaticGraph, OutgoingOrOppositeIncoming, DirectArcLimit(node))</td></tr>
|
|
<tr class="separator:a1db1a919e67261878ff8abda53e664c7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1728675285eb75f9f18d6ed7c134d0b6"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a1728675285eb75f9f18d6ed7c134d0b6">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcStaticGraph, OppositeIncoming, ReverseArcLimit(node))</td></tr>
|
|
<tr class="separator:a1728675285eb75f9f18d6ed7c134d0b6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ab3308688d13e59e2351bef038ce1fdb0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#ab3308688d13e59e2351bef038ce1fdb0">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcMixedGraph, Outgoing, DirectArcLimit(node))</td></tr>
|
|
<tr class="memdesc:ab3308688d13e59e2351bef038ce1fdb0"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classutil_1_1ReverseArcMixedGraph.html" title="This graph is a mix between the ReverseArcListGraph and the ReverseArcStaticGraph.">ReverseArcMixedGraph</a> implementation --------------------------------------—. <a href="namespaceutil.html#ab3308688d13e59e2351bef038ce1fdb0">More...</a><br /></td></tr>
|
|
<tr class="separator:ab3308688d13e59e2351bef038ce1fdb0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3c022b68f68916770fe09996df2f35a3"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a3c022b68f68916770fe09996df2f35a3">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcMixedGraph, Incoming, Base::kNilArc)</td></tr>
|
|
<tr class="separator:a3c022b68f68916770fe09996df2f35a3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a97910ddfce7560b406aa3f4939434eb8"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a97910ddfce7560b406aa3f4939434eb8">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcMixedGraph, OutgoingOrOppositeIncoming, DirectArcLimit(node))</td></tr>
|
|
<tr class="separator:a97910ddfce7560b406aa3f4939434eb8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6ce1a67d16c75b202f56301321a457c6"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceutil.html#a6ce1a67d16c75b202f56301321a457c6">util::DEFINE_RANGE_BASED_ARC_ITERATION</a> (ReverseArcMixedGraph, OppositeIncoming, Base::kNilArc)</td></tr>
|
|
<tr class="separator:a6ce1a67d16c75b202f56301321a457c6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<h2 class="groupheader">Macro Definition Documentation</h2>
|
|
<a id="a48a8a7aa004fc40d0d1d0ba63311cece"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a48a8a7aa004fc40d0d1d0ba63311cece">◆ </a></span>DEFINE_RANGE_BASED_ARC_ITERATION</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define DEFINE_RANGE_BASED_ARC_ITERATION</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">c, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">t, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">e </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">template</span> <<span class="keyword">typename</span> NodeIndexType, <span class="keyword">typename</span> ArcIndexType> \</div><div class="line"> BeginEndWrapper<typename c<NodeIndexType, ArcIndexType>::t##ArcIterator> \</div><div class="line"> c<NodeIndexType, ArcIndexType>::t##Arcs(NodeIndexType node)<span class="keyword"> const </span>{ \</div><div class="line"> return BeginEndWrapper<t##ArcIterator>(t##ArcIterator(*<span class="keyword">this</span>, node), \</div><div class="line"> t##ArcIterator(*<span class="keyword">this</span>, node, e)); \</div><div class="line"> } \</div><div class="line"> template <typename NodeIndexType, typename ArcIndexType> \</div><div class="line"> BeginEndWrapper<typename c<NodeIndexType, ArcIndexType>::t##ArcIterator> \</div><div class="line"> c<NodeIndexType, ArcIndexType>::t##ArcsStartingFrom( \</div><div class="line"> NodeIndexType node, ArcIndexType from)<span class="keyword"> const </span>{ \</div><div class="line"> return BeginEndWrapper<t##ArcIterator>(t##ArcIterator(*<span class="keyword">this</span>, node, from), \</div><div class="line"> t##ArcIterator(*<span class="keyword">this</span>, node, e)); \</div><div class="line"> }</div></div><!-- fragment -->
|
|
<p>Macros to wrap old style iteration into the new range-based for loop style. </p>
|
|
<p>The parameters are:</p><ul>
|
|
<li>c: the class name.</li>
|
|
<li>t: the iteration type (Outgoing, Incoming, OutgoingOrOppositeIncoming or OppositeIncoming).</li>
|
|
<li>e: the "end" ArcIndexType. </li>
|
|
</ul>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01060">1060</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa560f5e55268f818d5e5f43ed31e19a0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa560f5e55268f818d5e5f43ed31e19a0">◆ </a></span>DEFINE_STL_ITERATOR_FUNCTIONS</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define DEFINE_STL_ITERATOR_FUNCTIONS</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">iterator_class_name</td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">using</span> iterator_category = std::input_iterator_tag; \</div><div class="line"> using difference_type = ptrdiff_t; \</div><div class="line"> using pointer = <span class="keyword">const</span> ArcIndexType*; \</div><div class="line"> using reference = <span class="keyword">const</span> ArcIndexType&; \</div><div class="line"> using <a class="code" href="iterators_8h.html#ae7f303a443fbf651b13f8289d05ef498">value_type</a> = ArcIndexType; \</div><div class="line"> bool operator!=(<span class="keyword">const</span> iterator_class_name& other)<span class="keyword"> const </span>{ \</div><div class="line"> return this->index_ != other.index_; \</div><div class="line"> } \</div><div class="line"> bool operator==(<span class="keyword">const</span> iterator_class_name& other)<span class="keyword"> const </span>{ \</div><div class="line"> return this->index_ == other.index_; \</div><div class="line"> } \</div><div class="line"> ArcIndexType operator*()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this->Index(); } \</div><div class="line"> void operator++() { this-><a class="code" href="one__tree__lower__bound_8h.html#a3947d19ac087ef2cd68c2409920339c4">Next</a>(); }</div><div class="ttc" id="one__tree__lower__bound_8h_html_a3947d19ac087ef2cd68c2409920339c4"><div class="ttname"><a href="one__tree__lower__bound_8h.html#a3947d19ac087ef2cd68c2409920339c4">Next</a></div><div class="ttdeci">bool Next()</div><div class="ttdef"><b>Definition:</b> <a href="one__tree__lower__bound_8h_source.html#l00163">one_tree_lower_bound.h:163</a></div></div>
|
|
<div class="ttc" id="iterators_8h_html_ae7f303a443fbf651b13f8289d05ef498"><div class="ttname"><a href="iterators_8h.html#ae7f303a443fbf651b13f8289d05ef498">value_type</a></div><div class="ttdeci">typename std::iterator_traits< Iterator >::value_type value_type</div><div class="ttdef"><b>Definition:</b> <a href="iterators_8h_source.html#l00041">iterators.h:41</a></div></div>
|
|
</div><!-- fragment -->
|
|
<p>Adapt our old iteration style to support range-based for loops. </p>
|
|
<p>Add typedefs required by std::iterator_traits. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l01077">1077</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div>
|
|
<div id="footer-container">
|
|
<div id="footer">
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|