本文整理汇总了C++中Visitor::on_label_dominated方法的典型用法代码示例。如果您正苦于以下问题:C++ Visitor::on_label_dominated方法的具体用法?C++ Visitor::on_label_dominated怎么用?C++ Visitor::on_label_dominated使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Visitor
的用法示例。
在下文中一共展示了Visitor::on_label_dominated方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: new_sp_label
//.........这里部分代码省略.........
// delete only dominated labels, because nondominated labels are
// deleted at the end of the function
if( l->b_is_dominated )
{
l_alloc.destroy( l.get() );
l_alloc.deallocate( l.get(), 1 );
}
}
break;
}
if( !cur_label->b_is_dominated )
{
cur_label->b_is_processed = true;
vis.on_label_not_dominated( *cur_label, g );
typename graph_traits<Graph>::vertex_descriptor cur_vertex =
cur_label->resident_vertex;
typename graph_traits<Graph>::out_edge_iterator oei, oei_end;
for( boost::tie( oei, oei_end ) = out_edges( cur_vertex, g );
oei != oei_end;
++oei )
{
b_feasible = true;
r_c_shortest_paths_label<Graph, Resource_Container>* new_label =
l_alloc.allocate( 1 );
l_alloc.construct( new_label,
r_c_shortest_paths_label
<Graph, Resource_Container>
( i_label_num++,
cur_label->cumulated_resource_consumption,
cur_label.get(),
*oei,
target( *oei, g ) ) );
b_feasible =
ref( g,
new_label->cumulated_resource_consumption,
new_label->p_pred_label->cumulated_resource_consumption,
new_label->pred_edge );
if( !b_feasible )
{
vis.on_label_not_feasible( *new_label, g );
l_alloc.destroy( new_label );
l_alloc.deallocate( new_label, 1 );
}
else
{
const r_c_shortest_paths_label<Graph, Resource_Container>&
ref_new_label = *new_label;
vis.on_label_feasible( ref_new_label, g );
Splabel new_sp_label( new_label );
vec_vertex_labels[vertex_index_map[new_sp_label->resident_vertex]].
push_back( new_sp_label );
unprocessed_labels.push( new_sp_label );
}
}
}
else
{
vis.on_label_dominated( *cur_label, g );
l_alloc.destroy( cur_label.get() );
l_alloc.deallocate( cur_label.get(), 1 );
}
}
std::list<Splabel> dsplabels = vec_vertex_labels[vertex_index_map[t]];
typename std::list<Splabel>::const_iterator csi = dsplabels.begin();
typename std::list<Splabel>::const_iterator csi_end = dsplabels.end();
// if d could be reached from o
if( !dsplabels.empty() )
{
for( ; csi != csi_end; ++csi )
{
std::vector<typename graph_traits<Graph>::edge_descriptor>
cur_pareto_optimal_path;
const r_c_shortest_paths_label<Graph, Resource_Container>* p_cur_label =
(*csi).get();
pareto_optimal_resource_containers.
push_back( p_cur_label->cumulated_resource_consumption );
while( p_cur_label->num != 0 )
{
cur_pareto_optimal_path.push_back( p_cur_label->pred_edge );
p_cur_label = p_cur_label->p_pred_label;
}
pareto_optimal_solutions.push_back( cur_pareto_optimal_path );
if( !b_all_pareto_optimal_solutions )
break;
}
}
int i_size = static_cast<int>( vec_vertex_labels.size() );
for( int i = 0; i < i_size; ++i )
{
const std::list<Splabel>& list_labels_cur_vertex = vec_vertex_labels[i];
csi_end = list_labels_cur_vertex.end();
for( csi = list_labels_cur_vertex.begin(); csi != csi_end; ++csi )
{
l_alloc.destroy( (*csi).get() );
l_alloc.deallocate( (*csi).get(), 1 );
}
}
} // r_c_shortest_paths_dispatch