2019-06-13 15:36:14 +02:00
<!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"/> -->
2019-06-20 23:08:48 +02:00
< link rel = "stylesheet" type = "text/css" href = "ortools.css" title = "default" media = "screen,print" / >
2019-06-13 15:36:14 +02:00
< 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" >
2019-06-29 18:18:08 +02:00
< span id = "sfml" > OR-Tools 7.2< / span >
2019-06-13 15:36:14 +02:00
< / div >
< / div >
2019-06-29 18:18:08 +02:00
< link rel = "icon" href = "https://developers.google.com/optimization/images/orLogo.png" >
2019-06-13 15:36:14 +02:00
< 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 >
< / 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 > <!-- top -->
2019-07-12 13:25:23 -07:00
< div id = "side-nav" class = "ui-resizable side-nav-resizable" >
< div id = "nav-tree" >
< div id = "nav-tree-contents" >
< div id = "nav-sync" class = "sync" > < / div >
< / div >
< / div >
< div id = "splitbar" style = "-moz-user-select:none;"
class="ui-resizable-handle">
< / div >
< / div >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3& dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('graph_8h.html','');});
/* @license-end */
< / script >
< div id = "doc-content" >
2019-06-13 15:36:14 +02:00
< 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 >
< 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" >
2019-06-13 15:51:12 +02:00
< 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 >
2019-06-13 15:36:14 +02:00
< 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 -->
2019-07-12 13:25:23 -07:00
< / div > <!-- doc - content -->
2019-06-13 15:36:14 +02:00
< / div >
< div id = "footer-container" >
< div id = "footer" >
< / div >
< / div >
< / body >
< / html >