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