我是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 ;
}
答案 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]
。