当前位置: 首页>>代码示例>>C++>>正文


C++ shared_ptr::Concepts方法代码示例

本文整理汇总了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;
}
开发者ID:alexge233,项目名称:cgpp,代码行数:35,代码来源:Utilities.cpp

示例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;
}
开发者ID:alexge233,项目名称:cgpp,代码行数:46,代码来源:Utilities.cpp


注:本文中的std::shared_ptr::Concepts方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。