2012-04-01 13 views
0

私がしようとしているのは、関係を与えられたペアのセットを作ることです。 私は、ファイルxmemoryにライン208から、次のエラーを取得しておいてください。セットとxmemory in C++

エラーC2664: 'STD ::ペア< _Ty1、_Ty2> ::ペア(STD ::ペア< _Ty1、_Ty2> &') :パラメータ1を 'std :: pair < _Ty1、_Ty2>'から 'std :: pair < _Ty1、_Ty2> &' c:\ program files(x86)\ microsoft visual スタジオ10.0 \ vc \ include \ xメモリ208

私はなぜここに私のコード:

void print_relation(const set<pair<int, int>> R); 
set<pair<int, int>> init_relation(const int A[], const int size); 

void main() 
{ 
    int A[] = {1, 4, 5, 7, 8, 13, 18, 22, 39}; 
    const int size = 9; 

    set<pair<int, int>> R = init_relation(A, size); 
    print_relation(R); 

    system("pause"); 
} 

void print_relation(const set<pair<int, int>> R) 
{ 
    set<pair<int, int>>::iterator Rit = R.begin(); 

    cout << "Relation R:" << endl << endl; 

    for(int i = 0; Rit != R.end(); Rit++, i++) 
    { 
     printf("%d: (%d, %d)\n", i, (*Rit).first, (*Rit).second); 
    } 
} 

set<pair<int, int>> init_relation(const int A[], const int size) 
{ 
    set<pair<int, int>> R; 

    for(int i = 0; i < size - 1; i++) 
    { 
     for(int j = 0; j < size - 1; j++) 
     { 
       if((A[i] - A[j]) % 7 == 0) 
      { 
        R.insert(new pair<int, int>(i, j)); 
      } 
     } 
    } 

    return R; 
} 
+0

影響を受けるコード行をお知らせください。 –

答えて

4

エラーは、ペアへのポインタではないのペアを挿入する必要があり、ここで

R.insert(new pair<int, int>(i, j)); 

です。

R.insert(pair<int, int>(i, j)); 
+0

ありがとう!なぜそれがポインタにならないのか教えてください。 – CodeKingPlusPlus

+0

宣言したため、セットにはペアが含まれます。宣言すると、 *>を設定すると、ポインタを挿入することができます。 –

+0

コレクションにはペアが格納されるため、ペアへのポインタは格納されません。 –