无法理解功能(C ++)

时间:2017-01-31 08:27:12

标签: c++

我是C ++的新手(虽然我有C的经验)并且无法理解这个功能 我的问题特别与行:
std::tuple<std::string,std::string> tmp( protein[i], protein[i+order]) ;

有人可以向我解释一下吗?

std::vector< std::tuple< std::string,std::string > > domPairSet(std::vector<std::string> protein, int order ) {
    /*
    Create a set of domain pair of a specified order from a protein
    \param protein1
    \param order
    \return pairsOfDom
    */
    std::vector< std::tuple< std::string,std::string > > pairsOfDom ;    
    int cnt;    
    for (unsigned int i = 0 ; i < protein.size( ) - order ; i ++ ) {
        std::tuple<std::string,std::string> tmp( protein[i], protein[i+order]) ;
        cnt = std::count( pairsOfDom.begin(), pairsOfDom.end(), tmp ) ; 
        if ( cnt == 0 )
            pairsOfDom.push_back( tmp );
    }
    return pairsOfDom ;
}

1 个答案:

答案 0 :(得分:3)

std::tuple<std::string,std::string> tmp(protein[i], protein[i+order]);

std::tuple是一个类模板,它是任意类型值的固定大小集合。

因此,std::tuple<std::string, std::string> tmp创建了一个元组类型的变量,它包含两个std::string类型的元素。

最后,(protein[i], protein[i+order]);部分调用元组构造函数并将值传递给元组的元素。

因此,在此行之后,您将获得一个包含2个string类型元素的元组,其值为protein[i]protein[i+order]