2017-04-18 17 views
-1

C++のセットに含まれているペアの要素firstsecondにアクセスしたいとします。 私は次のコードを持っている:C++でセット内のペア要素にアクセス

#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; 
} 

は、しかし、明らかにそれを行うための正しい方法ではないのですが、私はstackoverflowのや他のウェブサイトを見てきたが、まだ答えを見つけることができませんでした。 この問題をどうやって解決できますか?

答えて

3

初めてアクセスfirstメンバーと、その後は(.*よりも優先されます)、それを逆参照しようとするためだとfirstメンバーがポインタあなたがそれを間接参照できないそうではありません。あなたはそれを他の方法で回避を行うと、括弧を追加することで、明示的な優先度を与えることがあります。

(*pairIt).first 

をC++で(正確に上記のコードと同じである)気の利いた「ショートカット演算子」を持っている:

pairIt->first 
+0

速いもの、そして通常、演算子の優先順位は、&と!= – Swift

+0

で最初に突き合わせます。@Swiftは例を挙げることができますか? –

+0

@Abhinav Gauniyal 'if(a&SOME_BIT_MASK!= SOME_VALUE)...'はうまく計算しません。なぜなら、最初に来るからです!= – Swift

関連する問題