2017-01-31 95 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類型的兩個元素。最後,​​部分調用元組構造函數並將值傳遞給元組。

因此,在這一行之後,您將擁有一個帶有2個元素string類型的元組,值爲protein[i]protein[i+order]