sets and xmemory in C++



我所要做的就是在给定关系的情况下生成一组对。我一直从文件xmemory的第208行得到以下错误:

错误C2664:"std::对&lt_Ty1,_Ty2>::对(std::对<_Ty1,_Ty2]&)':无法从'std::pair&lt_Ty1,_Ty2>'到'std::对&lt_Ty1,_Ty2>&'c: \program files(x86)\microsoft visualstudio 10.0\vc\include\xmemory 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;
}

出现错误

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

您应该插入对,而不是指向对的指针。

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

最新更新