本文整理汇总了C++中std::shared_ptr::Concepts方法的典型用法代码示例。如果您正苦于以下问题:C++ shared_ptr::Concepts方法的具体用法?C++ shared_ptr::Concepts怎么用?C++ shared_ptr::Concepts使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类std::shared_ptr
的用法示例。
在下文中一共展示了shared_ptr::Concepts方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: runtime_error
std::vector<std::shared_ptr<Concept>> Compare_Concepts_Difference (
const std::shared_ptr<ConceptualGraph> & lhs,
const std::shared_ptr<ConceptualGraph> & rhs
)
{
std::vector<std::shared_ptr<Concept>> diff;
if ( lhs && rhs )
{
const auto mine_concepts = lhs->Concepts();
const auto other_concepts = rhs->Concepts();
for ( const auto & concept : mine_concepts )
{
// If it doesn't exist in rhs->Relations(), add into current diff - comparison takes into account only Token Value
if ( std::find_if ( other_concepts.begin(), other_concepts.end(),
[&]( const std::shared_ptr<Concept> & ptr )
{
if ( concept )
return *concept->asToken() == *ptr->asToken();
else
throw std::runtime_error ( "cgpp::util Compare_Concepts_Difference: lamda param concept is null" );
}
) == other_concepts.end() )
{
diff.push_back ( concept );
}
}
}
else
throw std::runtime_error ( "cgpp::util Compare_Concepts_Difference: null graph param" );
return diff;
}
示例2: MinimumEdgesConnected
bool MinimumEdgesConnected ( const std::shared_ptr<ConceptualGraph> & graph )
{
if ( !graph )
throw std::runtime_error ( "cgpp::util:: MinimumEdgesConnected: null graph param" );
const auto concepts = graph->Concepts();
const auto relations = graph->Relations();
const auto edges = graph->Edges();
// Check if there exists at least one Edge from or to that concept - abort if there isn't at least one
for ( const auto & concept : concepts )
{
if ( std::find_if ( edges.begin(), edges.end(),
[&]( const Edge & rhs )
{
if ( rhs.from && rhs.to )
return *rhs.from == *concept || *rhs.to == *concept;
else
throw std::runtime_error ( "cgpp::util MinimumEdgesConnected lamda(1): rhs.from or rhs.to is nullptr - Edge problem ?" );
}
) == edges.end() )
{
return false;
}
}
// Check if there exists at least one Edge from or to that relation - abort if there isn't at least one
for ( const auto & relation : relations )
{
if ( std::find_if ( edges.begin(), edges.end(),
[&]( const Edge & rhs )
{
if ( rhs.from && rhs.to )
return *rhs.from == *relation || *rhs.to == *relation;
else
throw std::runtime_error ( "cgpp::util MinimumEdgesConnected lamda(2): rhs.from or rhs.to is nullptr - Edge problem ?" );
}
) == edges.end() )
{
return false;
}
}
// If function hasn't returned false so far, we may assume it has the minimum amount of edges
return true;
}