2017-01-31 4 views
-2

Я новичок в C++ (у меня есть опыт работы с C) и не могу понять эту функцию.
Моя проблема в том, в частности, с линией:
std::tuple<std::string,std::string> tmp(protein[i], protein[i+order]) ;Не могу понять функцию (C++)

Может кто-нибудь объяснить мне это?

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

Он создает и инициализирует переменную с именем 'tmp'. Тип: 'std :: tuple ', который в простых словах означает «пара строк». –

+0

Вы хотите прочитать на C++ - возможно, возьмите учебник онлайн-программирования или два - прежде чем пытаться понять код в нем. Это не язык, который можно проанализировать без особых инструкций. –

+0

Название вопроса и тег биоинформатики не имеют отношения к вопросу. (Как «Шерлок Холмс» не имеет никакого отношения к цели полной остановки в конце предложения в романе таинственного романа, который вы читаете.) Пожалуйста, отредактируйте свой вопрос, чтобы спросить о том, что это действительно вас озадачивает , Я бы предположил, что это связано с [tuple] (http://en.cppreference.com/w/cpp/utility/tuple), но я не могу читать ваши мысли, чтобы точно сказать. –

ответ

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].

Смежные вопросы