2017-04-18 73 views
-1

我想訪問包含在C++集合中的對的firstsecond元素。 我有以下代碼:訪問C++中的集合中的pair元素

#include <iostream> 
#include <set> 

using namespace std; 

int main() 
{ 
    set < pair<int, int> > pairTest; 
    set < pair<int, int> >::iterator pairIt; 

    for (int i=1; i<=10; ++i) 
    { 
    // inserting into the pair set 
    pairTest.insert({i, i*10}); 
    } 

    int m = pairTest.size(); 

    cout << "pairTest elements are: "; 
    for (pairIt = pairTest.begin();pairIt!=pairTest.end();pairIt++) 
    { 
    // I have the problem in the following 
    cout << *pairIt.first << " "; 
    } 

    return 0; 
} 

然而,顯然這不是做正確的方式,我一直在尋找計算器和其他網站,但還是沒能找到答案。 我該如何解決這個問題?

回答

3

那是因爲你第一次訪問first成員,然後嘗試取消對它的引用(.優先於*)和first成員是不是指針,所以你無法取消對它的引用。你必須圍繞做它的其他方式,並通過添加括號給出明確的優先級:

(*pairIt).first 

其中在C++有一個漂亮的「快捷鍵操作」(這是完全一樣的,上面的代碼):

pairIt->first 
+0

快速的一個,哈哈,通常是運算符優先級首次用&和!= – Swift

+0

@Swift咬你一個例子嗎? –

+0

@Abhinav Gauniyal例如'如果(a&SOME_BIT_MASK!= SOME_VALUE)......'計算不好......因爲先來了!= – Swift