Files
dl/document/html/classdl_1_1_a_star.html
2026-09-16 14:07:40 +08:00

614 lines
38 KiB
HTML
Vendored

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>dl: dl::AStar&lt; T, COST &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">dl
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.13.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','搜索',false);
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacedl.html">dl</a></li><li class="navelem"><a class="el" href="classdl_1_1_a_star.html">AStar</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes"></a> &#124;
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-static-methods">静态 Public 成员函数</a> &#124;
<a href="classdl_1_1_a_star-members.html">所有成员列表</a> </div>
<div class="headertitle"><div class="title">dl::AStar&lt; T, COST &gt; 模板类 参考</div></div>
</div><!--header-->
<div class="contents">
<p>A星寻路算法
<a href="#details">更多...</a></p>
<p><code>#include &lt;<a class="el" href="dl__astar_8h_source.html">dl_astar.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdl_1_1_a_star_1_1_a_star_node.html">AStarNode</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdl_1_1_a_star_1_1_a_star_priority_queue.html">AStarPriorityQueue</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:aa93d8f2aa4aeb8ef15b1f741078e1ab6" id="r_aa93d8f2aa4aeb8ef15b1f741078e1ab6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> = <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a></td></tr>
<tr class="separator:aa93d8f2aa4aeb8ef15b1f741078e1ab6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af989ec1292396968a634165d2775ebb4" id="r_af989ec1292396968a634165d2775ebb4"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af989ec1292396968a634165d2775ebb4">AStarCost</a> = COST</td></tr>
<tr class="separator:af989ec1292396968a634165d2775ebb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d73d282510f685c3425c6d5f201e7d3" id="r_a9d73d282510f685c3425c6d5f201e7d3"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9d73d282510f685c3425c6d5f201e7d3">FuncCost</a> = std::function&lt;<a class="el" href="#af989ec1292396968a634165d2775ebb4">AStarCost</a>(const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a>&amp;, const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a>&amp;)&gt;</td></tr>
<tr class="separator:a9d73d282510f685c3425c6d5f201e7d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ea291cdb5c440152228c200b373930b" id="r_a6ea291cdb5c440152228c200b373930b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6ea291cdb5c440152228c200b373930b">FuncLink</a> = std::function&lt;void(<a class="el" href="classdl_1_1_a_star.html">AStar</a>*, const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a>&amp;)&gt;</td></tr>
<tr class="separator:a6ea291cdb5c440152228c200b373930b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a541ab5b6e494ef516d62b108c28de034" id="r_a541ab5b6e494ef516d62b108c28de034"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a541ab5b6e494ef516d62b108c28de034">AbsPoint</a> (const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;a, const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;b)</td></tr>
<tr class="separator:a541ab5b6e494ef516d62b108c28de034"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a5e67b04c53edf6fab70a473525f33c" id="r_a1a5e67b04c53edf6fab70a473525f33c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#af989ec1292396968a634165d2775ebb4">AStarCost</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1a5e67b04c53edf6fab70a473525f33c">AStarGetH</a> (const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;p0, const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;p1)</td></tr>
<tr class="memdesc:a1a5e67b04c53edf6fab70a473525f33c"><td class="mdescLeft">&#160;</td><td class="mdescRight">默认获取H方法 <br /></td></tr>
<tr class="separator:a1a5e67b04c53edf6fab70a473525f33c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8922ac9e611bdebb5d9cba8aa25ff13f" id="r_a8922ac9e611bdebb5d9cba8aa25ff13f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8922ac9e611bdebb5d9cba8aa25ff13f">AStar</a> (const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;size, <a class="el" href="#a9d73d282510f685c3425c6d5f201e7d3">FuncCost</a> func_g, <a class="el" href="#a9d73d282510f685c3425c6d5f201e7d3">FuncCost</a> func_h=nullptr, <a class="el" href="#a6ea291cdb5c440152228c200b373930b">FuncLink</a> func_link=nullptr, size_t max_node=10000)</td></tr>
<tr class="memdesc:a8922ac9e611bdebb5d9cba8aa25ff13f"><td class="mdescLeft">&#160;</td><td class="mdescRight">定制一个A星寻路 <br /></td></tr>
<tr class="separator:a8922ac9e611bdebb5d9cba8aa25ff13f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af35a1aaa69793520a3b6f149a221f57d" id="r_af35a1aaa69793520a3b6f149a221f57d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af35a1aaa69793520a3b6f149a221f57d">SetSize</a> (const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;size)</td></tr>
<tr class="separator:af35a1aaa69793520a3b6f149a221f57d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2ede3d24653a0eabe064d9b4804e246" id="r_ae2ede3d24653a0eabe064d9b4804e246"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae2ede3d24653a0eabe064d9b4804e246">Search</a> (const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;source, const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;target, bool target_near, std::list&lt; <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &gt; &amp;list_path, std::list&lt; <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &gt; *fail_path=nullptr)</td></tr>
<tr class="memdesc:ae2ede3d24653a0eabe064d9b4804e246"><td class="mdescLeft">&#160;</td><td class="mdescRight">搜索 <br /></td></tr>
<tr class="separator:ae2ede3d24653a0eabe064d9b4804e246"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35ce6db852876aefcdea10444ea54ac2" id="r_a35ce6db852876aefcdea10444ea54ac2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a35ce6db852876aefcdea10444ea54ac2">AddNode</a> (const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;xy, <a class="el" href="#af989ec1292396968a634165d2775ebb4">AStarCost</a> k_cost)</td></tr>
<tr class="memdesc:a35ce6db852876aefcdea10444ea54ac2"><td class="mdescLeft">&#160;</td><td class="mdescRight">添加节点(在func_link回调函数使用) <br /></td></tr>
<tr class="separator:a35ce6db852876aefcdea10444ea54ac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd64487e30a1711ced54f2bbef9d46df" id="r_afd64487e30a1711ced54f2bbef9d46df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afd64487e30a1711ced54f2bbef9d46df">SetLinkDiagonal</a> (bool diagonal)</td></tr>
<tr class="memdesc:afd64487e30a1711ced54f2bbef9d46df"><td class="mdescLeft">&#160;</td><td class="mdescRight">设置是否对角线可走(使用默认连接函数才有效) <br /></td></tr>
<tr class="separator:afd64487e30a1711ced54f2bbef9d46df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b150c00580e815157925f0ba84f50d1" id="r_a6b150c00580e815157925f0ba84f50d1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6b150c00580e815157925f0ba84f50d1">SetFuncLink</a> (<a class="el" href="#a6ea291cdb5c440152228c200b373930b">FuncLink</a> func_link)</td></tr>
<tr class="memdesc:a6b150c00580e815157925f0ba84f50d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">修改连接函数 <br /></td></tr>
<tr class="separator:a6b150c00580e815157925f0ba84f50d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058c8f1ea4d14cc44d2121c5e32eec7a" id="r_a058c8f1ea4d14cc44d2121c5e32eec7a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a058c8f1ea4d14cc44d2121c5e32eec7a">~AStar</a> ()</td></tr>
<tr class="separator:a058c8f1ea4d14cc44d2121c5e32eec7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
<tr class="memitem:a783ed45b8123c6cf56dab800b76fb3dc" id="r_a783ed45b8123c6cf56dab800b76fb3dc"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a783ed45b8123c6cf56dab800b76fb3dc">AStarNodeCompare</a> (<a class="el" href="classdl_1_1_a_star_1_1_a_star_node.html">AStarNode</a> *n1, <a class="el" href="classdl_1_1_a_star_1_1_a_star_node.html">AStarNode</a> *n2)</td></tr>
<tr class="separator:a783ed45b8123c6cf56dab800b76fb3dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt;<br />
class dl::AStar&lt; T, COST &gt;</div><p>A星寻路算法 </p>
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00033">33</a> 行定义.</p>
</div><h2 class="groupheader">成员类型定义说明</h2>
<a id="af989ec1292396968a634165d2775ebb4" name="af989ec1292396968a634165d2775ebb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af989ec1292396968a634165d2775ebb4">&#9670;&#160;</a></span>AStarCost</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::AStarCost = COST</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00039">39</a> 行定义.</p>
</div>
</div>
<a id="aa93d8f2aa4aeb8ef15b1f741078e1ab6" name="aa93d8f2aa4aeb8ef15b1f741078e1ab6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">&#9670;&#160;</a></span>AStarPoint</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::AStarPoint = <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00037">37</a> 行定义.</p>
</div>
</div>
<a id="a9d73d282510f685c3425c6d5f201e7d3" name="a9d73d282510f685c3425c6d5f201e7d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d73d282510f685c3425c6d5f201e7d3">&#9670;&#160;</a></span>FuncCost</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::FuncCost = std::function&lt;<a class="el" href="#af989ec1292396968a634165d2775ebb4">AStarCost</a>(const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a>&amp;, const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a>&amp;)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00040">40</a> 行定义.</p>
</div>
</div>
<a id="a6ea291cdb5c440152228c200b373930b" name="a6ea291cdb5c440152228c200b373930b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ea291cdb5c440152228c200b373930b">&#9670;&#160;</a></span>FuncLink</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::FuncLink = std::function&lt;void(<a class="el" href="classdl_1_1_a_star.html">AStar</a>*, const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a>&amp;)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00041">41</a> 行定义.</p>
</div>
</div>
<h2 class="groupheader">构造及析构函数说明</h2>
<a id="a8922ac9e611bdebb5d9cba8aa25ff13f" name="a8922ac9e611bdebb5d9cba8aa25ff13f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8922ac9e611bdebb5d9cba8aa25ff13f">&#9670;&#160;</a></span>AStar()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::AStar </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="#a9d73d282510f685c3425c6d5f201e7d3">FuncCost</a></td> <td class="paramname"><span class="paramname"><em>func_g</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="#a9d73d282510f685c3425c6d5f201e7d3">FuncCost</a></td> <td class="paramname"><span class="paramname"><em>func_h</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="#a6ea291cdb5c440152228c200b373930b">FuncLink</a></td> <td class="paramname"><span class="paramname"><em>func_link</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>max_node</em></span><span class="paramdefsep"> = </span><span class="paramdefval">10000</span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>定制一个A星寻路 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>地图大小,传0不检查 </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">func_g</td><td>估价g函数(从p0点到p1点实际代价,一般取p1的代价值,p0与p1应为相邻节点) </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">func_h</td><td>估价h函数(从p0点到目标点估计代价,一般为距离) </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">func_link</td><td>连接函数(加入节点的相邻节点) </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">max_node</td><td>节点上限(超过返回失败) </td></tr>
</table>
</dd>
</dl>
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00130">130</a> 行定义.</p>
</div>
</div>
<a id="a058c8f1ea4d14cc44d2121c5e32eec7a" name="a058c8f1ea4d14cc44d2121c5e32eec7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a058c8f1ea4d14cc44d2121c5e32eec7a">&#9670;&#160;</a></span>~AStar()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::~<a class="el" href="classdl_1_1_a_star.html">AStar</a> </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00319">319</a> 行定义.</p>
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="a541ab5b6e494ef516d62b108c28de034" name="a541ab5b6e494ef516d62b108c28de034"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a541ab5b6e494ef516d62b108c28de034">&#9670;&#160;</a></span>AbsPoint()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::AbsPoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;</td> <td class="paramname"><span class="paramname"><em>a</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;</td> <td class="paramname"><span class="paramname"><em>b</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00099">99</a> 行定义.</p>
</div>
</div>
<a id="a35ce6db852876aefcdea10444ea54ac2" name="a35ce6db852876aefcdea10444ea54ac2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35ce6db852876aefcdea10444ea54ac2">&#9670;&#160;</a></span>AddNode()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::AddNode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;</td> <td class="paramname"><span class="paramname"><em>xy</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="#af989ec1292396968a634165d2775ebb4">AStarCost</a></td> <td class="paramname"><span class="paramname"><em>k_cost</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>添加节点(在func_link回调函数使用) </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">xy</td><td>节点位置 </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">k</td><td>价值系数 </td></tr>
</table>
</dd>
</dl>
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00250">250</a> 行定义.</p>
</div>
</div>
<a id="a1a5e67b04c53edf6fab70a473525f33c" name="a1a5e67b04c53edf6fab70a473525f33c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a5e67b04c53edf6fab70a473525f33c">&#9670;&#160;</a></span>AStarGetH()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="#af989ec1292396968a634165d2775ebb4">AStarCost</a> <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::AStarGetH </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;</td> <td class="paramname"><span class="paramname"><em>p0</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;</td> <td class="paramname"><span class="paramname"><em>p1</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>默认获取H方法 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">xy</td><td>节点位置 </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">k</td><td>价值系数 </td></tr>
</table>
</dd>
</dl>
<p>&lt; 横着走系数</p>
<p>&lt; 斜着走系数</p>
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00112">112</a> 行定义.</p>
</div>
</div>
<a id="a783ed45b8123c6cf56dab800b76fb3dc" name="a783ed45b8123c6cf56dab800b76fb3dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a783ed45b8123c6cf56dab800b76fb3dc">&#9670;&#160;</a></span>AStarNodeCompare()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::AStarNodeCompare </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classdl_1_1_a_star_1_1_a_star_node.html">AStarNode</a> *</td> <td class="paramname"><span class="paramname"><em>n1</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classdl_1_1_a_star_1_1_a_star_node.html">AStarNode</a> *</td> <td class="paramname"><span class="paramname"><em>n2</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00055">55</a> 行定义.</p>
</div>
</div>
<a id="ae2ede3d24653a0eabe064d9b4804e246" name="ae2ede3d24653a0eabe064d9b4804e246"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2ede3d24653a0eabe064d9b4804e246">&#9670;&#160;</a></span>Search()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::Search </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;</td> <td class="paramname"><span class="paramname"><em>source</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;</td> <td class="paramname"><span class="paramname"><em>target</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>target_near</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::list&lt; <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>list_path</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::list&lt; <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &gt; *</td> <td class="paramname"><span class="paramname"><em>fail_path</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>搜索 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">source</td><td>起始点 </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">target</td><td>目标点 </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">target_near</td><td>如果为真,在相邻目标点就返回路径,而不考虑目标点是否可通行 </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">list_path</td><td>返回路径,包含首尾节点(target_near为真时,不返回尾节点) </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">fail_path</td><td>寻路失败时返回的部分路径 </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>返回值</dt><dd>
<table class="retval">
<tr><td class="paramname">是否成功</td><td></td></tr>
</table>
</dd>
</dl>
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00166">166</a> 行定义.</p>
</div>
</div>
<a id="a6b150c00580e815157925f0ba84f50d1" name="a6b150c00580e815157925f0ba84f50d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b150c00580e815157925f0ba84f50d1">&#9670;&#160;</a></span>SetFuncLink()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::SetFuncLink </td>
<td>(</td>
<td class="paramtype"><a class="el" href="#a6ea291cdb5c440152228c200b373930b">FuncLink</a></td> <td class="paramname"><span class="paramname"><em>func_link</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>修改连接函数 </p>
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00313">313</a> 行定义.</p>
</div>
</div>
<a id="afd64487e30a1711ced54f2bbef9d46df" name="afd64487e30a1711ced54f2bbef9d46df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd64487e30a1711ced54f2bbef9d46df">&#9670;&#160;</a></span>SetLinkDiagonal()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::SetLinkDiagonal </td>
<td>(</td>
<td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>diagonal</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>设置是否对角线可走(使用默认连接函数才有效) </p>
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00304">304</a> 行定义.</p>
</div>
</div>
<a id="af35a1aaa69793520a3b6f149a221f57d" name="af35a1aaa69793520a3b6f149a221f57d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af35a1aaa69793520a3b6f149a221f57d">&#9670;&#160;</a></span>SetSize()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, typename COST&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classdl_1_1_a_star.html">dl::AStar</a>&lt; <a class="el" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>, COST &gt;::SetSize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="#aa93d8f2aa4aeb8ef15b1f741078e1ab6">AStarPoint</a> &amp;</td> <td class="paramname"><span class="paramname"><em>size</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">在文件 <a class="el" href="dl__astar_8h_source.html">dl_astar.h</a><a class="el" href="dl__astar_8h_source.html#l00152">152</a> 行定义.</p>
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>D:/dl/dl/misc/<a class="el" href="dl__astar_8h_source.html">dl_astar.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.1
</small></address>
</div><!-- doc-content -->
</body>
</html>