往elementmap里面存数据就会报错


#include 
#include 
#include 
#include 
using namespace std;

class V
{
    public:
        int value;
        V* head;
        V()
        {
            this->value=0;
            head=this;
        }
};
class unionfindset
{
    public:
    map>*elementmap;
    map,vector>*fathermap;
    map,int>*sizemap;
    unionfindset(list list1)
    {
        elementmap=new map>();
        fathermap=new map,vector>();
        sizemap=new map,int>();
        for(V value:  list1)
        {
            vectorelement=vector{value};
            elementmap->insert(make_pair(value,element));
        }
    }
    
};
int main(int argc, char** argv)
{
    V v ;
    listl ;
    l.push_back(v);
    unionfindset u(l);
    return 0;
}

你怎么报错的?是这样吗?

/usr/include/c++/7/bits/stl_pair.h:169:11: error: no matching function for call to ‘std::pair<V, std::vector<V> >::pair(V&, std::vector<V>&)’
  first(std::forward<_Args1>(__args1)...), second(std::forward<_Args2>(__args2)...) { }

这是因为在map插入元素时,键类型和值类型不匹配引起的。
你把这个代码

elementmap->insert(make_pair(value,element));


替换成

elementmap->insert(make_pair<V,vector<V>>(value,element));