dcc_and_cx 发表于 2022-1-28 16:41:27

求助,关于图的结构,应该怎么改,出现错误

本帖最后由 dcc_and_cx 于 2022-1-29 14:51 编辑

#include<iostream>
using namespace std;
#include<unordered_map>

#include<vector>
#include<unordered_set>

class edge;
class Node
{
public:
        int value;//点的值
        int in;                //入度
        int out;        //出度
        vector<Node> *nexts;    //邻接点集
        vector<edge> *edges;        //邻接边集
        Node(int value)
        {
                this->value = value;
                this->in = 0;
                this->out = 0;
                this->nexts = new vector<Node>();
                this->edges = new vector<edge>();
        }
       
        Node()
        {

        }

};
class edge    //边
{
public:
        int weight;//权重
        Node from;   //起始点
        Node to;        //终点
        edge(int w, Node f, Node t)
        {
                weight = w;
                from = f;
                to = t;
        }
};
class Graphy//图
{
public:
        unordered_map<int,Node> *nodes;//点集
        unordered_set<edge> *Edges;   //边集
        Graphy()
        {
                nodes=new unordered_map<int,Node>();
                Edges = new unordered_set<edge>();
        }
};
int main()
{
       
       
       
}

出现的问题:
图的转化.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\unordered_set(50,99): error C2280: “std::_Uhash_compare<_Kty,_Hasher,_Keyeq>::_Uhash_compare(const std::_Uhash_compare<_Kty,_Hasher,_Keyeq> &)”: 尝试引用已删除的函数
1>      with
1>      [
1>            _Kty=edge,
1>            _Hasher=std::hash<edge>,
1>            _Keyeq=std::equal_to<edge>
1>      ]
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xhash(168): message : 编译器已在此处生成“std::_Uhash_compare<_Kty,_Hasher,_Keyeq>::_Uhash_compare”
1>      with
1>      [
1>            _Kty=edge,
1>            _Hasher=std::hash<edge>,
1>            _Keyeq=std::equal_to<edge>
1>      ]
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xhash(168,1): message : “std::_Uhash_compare<_Kty,_Hasher,_Keyeq>::_Uhash_compare(const std::_Uhash_compare<_Kty,_Hasher,_Keyeq> &)”: 由于 数据成员 调用已删除或不可访问的函数“std::_Compressed_pair<_Hasher,std::_Compressed_pair<_Keyeq,float,true>,true>::_Compressed_pair(const std::_Compressed_pair<_Hasher,std::_Compressed_pair<_Keyeq,float,true>,true> &)”,因此已隐式删除函数
1>      with
1>      [
1>            _Kty=edge,
1>            _Hasher=std::hash<edge>,
1>            _Keyeq=std::equal_to<edge>
1>      ]
1>      and
1>      [
1>            _Hasher=std::hash<edge>,
1>            _Keyeq=std::equal_to<edge>
1>      ]
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xmemory(1404,1): message : “std::_Compressed_pair<_Hasher,std::_Compressed_pair<_Keyeq,float,true>,true>::_Compressed_pair(const std::_Compressed_pair<_Hasher,std::_Compressed_pair<_Keyeq,float,true>,true> &)”: 由于 基类 调用已删除或不可访问的函数“std::hash<edge>::hash(const std::hash<edge> &)”,因此已隐式删除函数
1>      with
1>      [
1>            _Hasher=std::hash<edge>,
1>            _Keyeq=std::equal_to<edge>
1>      ]
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\type_traits(2256,1): message : “std::hash<edge>::hash(const std::hash<edge> &)”: 由于 基类 调用已删除或不可访问的函数“std::_Conditionally_enabled_hash<_Kty,false>::_Conditionally_enabled_hash(const std::_Conditionally_enabled_hash<_Kty,false> &)”,因此已隐式删除函数
1>      with
1>      [
1>            _Kty=edge
1>      ]
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\type_traits(2241,5): message : “std::_Conditionally_enabled_hash<_Kty,false>::_Conditionally_enabled_hash(const std::_Conditionally_enabled_hash<_Kty,false> &)”: 已隐式删除函数
1>      with
1>      [
1>            _Kty=edge
1>      ]
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\unordered_set(50): message : 在编译 类 模板 成员函数“std::_Uset_traits<_Kty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>::_Uset_traits(const _Tr &) noexcept(false)”时
1>      with
1>      [
1>            _Kty=edge,
1>            _Hasher=std::hash<edge>,
1>            _Keyeq=std::equal_to<edge>,
1>            _Alloc=std::allocator<edge>,
1>            _Tr=std::_Uhash_compare<edge,std::hash<edge>,std::equal_to<edge>>
1>      ]
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xhash(368): message : 查看对正在编译的函数 模板 实例化“std::_Uset_traits<_Kty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>::_Uset_traits(const _Tr &) noexcept(false)”的引用
1>      with
1>      [
1>            _Kty=edge,
1>            _Hasher=std::hash<edge>,
1>            _Keyeq=std::equal_to<edge>,
1>            _Alloc=std::allocator<edge>,
1>            _Tr=std::_Uhash_compare<edge,std::hash<edge>,std::equal_to<edge>>
1>      ]
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xhash(327): message : 查看对正在编译的 类 模板 实例化“std::_Uset_traits<_Kty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>”的引用
1>      with
1>      [
1>            _Kty=edge,
1>            _Hasher=std::hash<edge>,
1>            _Keyeq=std::equal_to<edge>,
1>            _Alloc=std::allocator<edge>
1>      ]
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\unordered_set(65): message : 查看对正在编译的 类 模板 实例化“std::_Hash<std::_Uset_traits<_Kty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>>”的引用
1>      with
1>      [
1>            _Kty=edge,
1>            _Hasher=std::hash<edge>,
1>            _Keyeq=std::equal_to<edge>,
1>            _Alloc=std::allocator<edge>
1>      ]
1>F:\图的转化\图的转化.cpp(53): message : 查看对正在编译的 类 模板 实例化“std::unordered_set<edge,std::hash<edge>,std::equal_to<edge>,std::allocator<edge>>”的引用
1>已完成生成项目“图的转化.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

页: [1]
查看完整版本: 求助,关于图的结构,应该怎么改,出现错误