2013-10-08 99 views
0

我想通過包含該類型的雙我的整個列進行迭代並且由列的大小劃分的每個值。這會給我的頻率。我本來不是問題的陣列或任何其它數據類型這樣做。我仍然在學習矢量。下面是我試圖操縱迭代通過矢量列C++

vector<pair<char, double>> output; 
+0

這不是2D。這是一維的兩個副本,而不是一次兩次的產品。 –

回答

2

如果你有ç ++ 11:

for (auto & p : output) 
{ 
    cout << p.first << " " << p.second << "\n"; 
} 
std::cout << std::endl; 

或與C++ 03

for (std::vector<std::pair<char, double> >::iterator it = output.begin(); 
    it != output.end(); ++it) 
{ 
    cout << it .first << " " << it .second << "\n"; 
} 
std::cout << std::endl; 
1

你可以把一個載體,就像一個數組,並訪問使用[]元素的2D矢量型。例如:

for (size_t i = 0; i < output.size(); ++i) 
{ 
    pair<char, double>& element = output[i]; // access element i in the vector 
    cout << element.first; // prints the first member of the pair 
    cout << element.second; // prints the second member of the pair 
} 
1

的std ::對是一個結構模板,它提供了一種方法,以2個 異構對象存儲爲單個單元。

,如果你有一個pairs矢量這意味着你將通過pair接口訪問數據。您可以通過second通過first成員和第二獲得對第一數據。

for(std::vector<std::pair <char, double> >::const_iterator vpci = arg.begin(); 
    vpci != arg.end(); ++vpci) { 
     cout << vpci->first << "->" << vpci->second; 
} 

,甚至更好,也許創建一個模板:

template <typename T1, typename T2> 
void prn_vecOfPair(const std::vector<std::pair <T1, T2> > &arg, string sep ="") { 
    for(std::vector<std::pair <T1, T2> >::const_iterator vpci = arg.begin(); 
     vpci != arg.end(); ++vpci) { 
     cout << vpci->first << "->" << vpci->second << sep; 
    } 
} 
在C++ 11本(照舊)

可以做容易得多:

for (auto & i : output) 
{ 
    cout << i->first << "->" << i->second << "\n"; 
} 
+0

非常有幫助,謝謝! – user977154

+0

一對不是特定元組。成對可以比元組更普遍的標準佈局。 –