繁体   English   中英

C ++中的集合和xmemory

[英]sets and xmemory in C++

我要做的就是给一对有关系的对。 我不断从文件xmemory的第208行收到以下错误:

错误C2664:'std :: pair <_Ty1,_Ty2> :: pair(std :: pair <_Ty1,_Ty2>&)':无法将参数1从'std :: pair <_Ty1,_Ty2>'转换为'std: :pair <_Ty1,_Ty2>&'c:\\程序文件(x86)\\ Microsoft Visual Studio 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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM