本文整理汇总了C++中reservable_priority_queue::push方法的典型用法代码示例。如果您正苦于以下问题:C++ reservable_priority_queue::push方法的具体用法?C++ reservable_priority_queue::push怎么用?C++ reservable_priority_queue::push使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类reservable_priority_queue
的用法示例。
在下文中一共展示了reservable_priority_queue::push方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Push
/**
* Add node to search queue
*
* @param n Destination node to add
* @param pn Previous node
* @param e Edge distance (previous to this)
*/
void Push(const Node &node, const Node &parent,
const AStarPriorityValue &edge_value) {
// Try to find the given node n in the node_value_map
node_value_iterator it = node_values.find(node);
if (it == node_values.end()) {
// first entry
// If the node wasn't found
// -> Insert a new node into the node_value_map
it = node_values.insert(std::make_pair(node, edge_value)).first;
// Remember the parent node
SetPredecessor(node, parent);
} else if (it->second > edge_value) {
// If the node was found and the new value is smaller
// -> Replace the value with the new one
it->second = edge_value;
// replace, it's bigger
// Remember the new parent node
SetPredecessor(node, parent);
} else
// If the node was found but the value is higher or equal
// -> Don't use this new leg
return;
q.push(NodeValue(edge_value, it));
}
示例2: RestartQueue
/**
* Clear the queue and re-insert all known links.
*/
void RestartQueue() {
// Clear the search queue
q.clear();
for (const auto &i : edges)
q.push(Value(i.second.value, i));
}
示例3: RestartQueue
/**
* Clear the queue and re-insert all known links.
*/
void RestartQueue() {
// Clear the search queue
while (!q.empty())
q.pop();
for (const auto &i : edges)
q.push(Value(i.second.value, i));
}
示例4: push
/**
* Add node to search queue
*
* @param n Destination node to add
* @param pn Previous node
* @param e Edge distance (previous to this)
*/
void push(const Node &node, const Node &parent, unsigned edge_value = 0) {
// Try to find the given node n in the edge_map
edge_iterator it = edges.find(node);
if (it == edges.end())
// first entry
// If the node wasn't found
// -> Insert a new node
it = edges.insert(std::make_pair(node, Edge(parent, edge_value))).first;
else if (it->second.value > edge_value)
// If the node was found and the new value is smaller
// -> Replace the value with the new one
it->second = Edge(parent, edge_value);
else
// If the node was found but the new value is higher or equal
// -> Don't use this new leg
return;
q.push(Value(edge_value, it));
}