C++ 订阅C++;无序的_映射导致没有用于初始化';的匹配构造函数;合作社';错误

C++ 订阅C++;无序的_映射导致没有用于初始化';的匹配构造函数;合作社';错误,c++,C++,我有一个自定义类,Coord(代表坐标)。当我尝试创建带有x和y变量的Coord构造函数时,它工作得很好。但是,当我尝试在无序的_映射中存储坐标时,它失败了 协调级 class Coord{ public: int x, y; public: Coord(int x1, int y1) { x = x1; y = y1; } int getX(void) const

我有一个自定义类,Coord(代表坐标)。当我尝试创建带有x和y变量的Coord构造函数时,它工作得很好。但是,当我尝试在无序的_映射中存储坐标时,它失败了

协调级

class Coord{ 
    public:
        int x, y;

    public:
        Coord(int x1, int y1) {
            x = x1;
            y = y1;
        }
        int getX(void) const{
            return x;
        }
        int getY(void) const{
            return y;
        }
        bool operator<(const Coord& other) const
        { return x<other.x || (!(x<other.x) && y<other.y); }
        bool operator==(const Coord &other) const
        {
            return (x == other.x && y == other.y);
        }
};
我创建了一个无序的_映射对象,并尝试将坐标对象插入其中。下面的代码可以工作

unordered_map<Coord, Coord> came_from;
Coord start = Coord(0,0);

came_from.insert({start, start});
无序的地图来自;
坐标起点=坐标(0,0);
来自.insert({start,start});
然后我试着下标。这给了我一个不匹配的构造函数 “合作”的初始化

unordered_map<Coord, Coord> came_from;
Coord start = Coord(0,0);
came_from[start] = start;
无序的地图来自;
坐标起点=坐标(0,0);
来自[开始]=开始;
完整错误消息

error: no matching constructor for
      initialization of 'Coord'
      second(_VSTD::forward<_Args2>(_VSTD::get<_I2>(__second_args))...)
      ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:487:11: note: in instantiation of function template
      specialization 'std::__1::pair<const Coord, Coord>::pair<const Coord &, 0>' requested here
        : pair(__pc, __first_args, __second_args,
          ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1805:31: note: in instantiation of function template
      specialization 'std::__1::pair<const Coord, Coord>::pair<const Coord &>' requested here
            ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
                              ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1715:18: note: in instantiation of function template
      specialization 'std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<Coord, Coord>, void *> >::construct<std::__1::pair<const Coord,
      Coord>, const std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >' requested here
            {__a.construct(__p, _VSTD::forward<_Args>(__args)...);}
                 ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1561:14: note: in instantiation of function template
      specialization 'std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<Coord, Coord>, void *> >
      >::__construct<std::__1::pair<const Coord, Coord>, const std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >'
      requested here
            {__construct(__has_construct<allocator_type, _Tp*, _Args...>(),
             ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:2305:20: note: in instantiation of function
      template specialization 'std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<Coord, Coord>, void *> >
      >::construct<std::__1::pair<const Coord, Coord>, const std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >' requested
      here
    __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_),
                   ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:2021:29: note: in instantiation of function
      template specialization 'std::__1::__hash_table<std::__1::__hash_value_type<Coord, Coord>, std::__1::__unordered_map_hasher<Coord,
      std::__1::__hash_value_type<Coord, Coord>, std::__1::hash<Coord>, true>, std::__1::__unordered_map_equal<Coord, std::__1::__hash_value_type<Coord,
      Coord>, std::__1::equal_to<Coord>, true>, std::__1::allocator<std::__1::__hash_value_type<Coord, Coord> > >::__construct_node_hash<const
      std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >' requested here
        __node_holder __h = __construct_node_hash(__hash, _VSTD::forward<_Args>(__args)...);
                            ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/unordered_map:1386:21: note: in instantiation of function
      template specialization 'std::__1::__hash_table<std::__1::__hash_value_type<Coord, Coord>, std::__1::__unordered_map_hasher<Coord,
      std::__1::__hash_value_type<Coord, Coord>, std::__1::hash<Coord>, true>, std::__1::__unordered_map_equal<Coord, std::__1::__hash_value_type<Coord,
      Coord>, std::__1::equal_to<Coord>, true>, std::__1::allocator<std::__1::__hash_value_type<Coord, Coord> > >::__emplace_unique_key_args<Coord, const
      std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >' requested here
    return __table_.__emplace_unique_key_args(__k,
                    ^
lab1.cpp:341:14: note: in instantiation of member function 'std::__1::unordered_map<Coord, Coord, std::__1::hash<Coord>, std::__1::equal_to<Coord>,
      std::__1::allocator<std::__1::pair<const Coord, Coord> > >::operator[]' requested here
    came_from[start] = start;
             ^
lab1.cpp:34:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
class Coord{ 
      ^
lab1.cpp:34:7: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
lab1.cpp:39:9: note: candidate constructor not viable: requires 2 arguments, but 0 were provided
        Coord(int x1, int y1) {
错误:没有匹配的构造函数
“Coord”的初始化
第二个(_-VSTD::forward(_-VSTD::get(u-second_-args))…)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:487:11:注意:在函数模板的实例化中
此处请求专门化“std::uu 1::pair::pair”
:配对(\uuuu pc、\uuu第一个参数、\uuu第二个参数、,
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1805:31:注意:在函数模板的实例化中
此处请求专门化“std::uu 1::pair::pair”
::新建((void*)\u p)\u向上(\u VSTD::forward(\u args)…);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1715:18:注意:在函数模板的实例化中
此处请求专门化“std::uu 1::分配器::构造”
{{构造({p,{VSTD::forward({args)…);}
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1561:14:注意:在函数模板的实例化中
专门化“std::_1::分配器特征::_构造”
在此请求
{{uuuu构造({uu有\u构造(),
^
/Applications/Xcode.app/Contents/Developer/toolschains/XcodeDefault.xctoolchain/usr/include/c++/v1/u散列表:2305:20:注意:在函数的实例化中
已请求模板专门化“std::\uu 1::分配器\u traits::construct”
在这里
__node_traits::construct(_na,_NodeTypes::_get_ptr(_h->_value_u),
^
/Applications/Xcode.app/Contents/Developer/toolschains/XcodeDefault.xctoolchain/usr/include/c++/v1/u散列表:2021:29:注意:在函数的实例化中
模板专门化“std::\uuuu 1::\uuu哈希表::\uu构造\u节点\u哈希”已在此处请求
__node_holder_uuh=uuu构造_node_散列(uu散列,_VSTD::forward(u参数)…);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/unordered_映射:1386:21:注意:在函数的实例化中
此处请求的模板专门化“std::uu 1::u哈希表::uu emplace\u unique\u key\u args”
返回表、模板、唯一键、参数,
^
lab1.cpp:341:14:注意:在成员函数的实例化中,此处请求了“std::u 1::无序_map::operator[]”
来自[开始]=开始;
^
lab1.cpp:34:7:注意:候选构造函数(隐式副本构造函数)不可行:需要1个参数,但提供了0
类坐标{
^
lab1.cpp:34:7:注意:候选构造函数(隐式移动构造函数)不可行:需要1个参数,但提供了0
lab1.cpp:39:9:注意:候选构造函数不可行:需要2个参数,但提供了0
协调(内部x1,内部y1){
我已经看过了你给我看的重复链接,但我不确定它是如何解决这个问题的。你能帮忙吗?因为它的哈希非常好

error: no matching constructor for
      initialization of 'Coord'
      second(_VSTD::forward<_Args2>(_VSTD::get<_I2>(__second_args))...)
      ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:487:11: note: in instantiation of function template
      specialization 'std::__1::pair<const Coord, Coord>::pair<const Coord &, 0>' requested here
        : pair(__pc, __first_args, __second_args,
          ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1805:31: note: in instantiation of function template
      specialization 'std::__1::pair<const Coord, Coord>::pair<const Coord &>' requested here
            ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
                              ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1715:18: note: in instantiation of function template
      specialization 'std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<Coord, Coord>, void *> >::construct<std::__1::pair<const Coord,
      Coord>, const std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >' requested here
            {__a.construct(__p, _VSTD::forward<_Args>(__args)...);}
                 ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1561:14: note: in instantiation of function template
      specialization 'std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<Coord, Coord>, void *> >
      >::__construct<std::__1::pair<const Coord, Coord>, const std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >'
      requested here
            {__construct(__has_construct<allocator_type, _Tp*, _Args...>(),
             ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:2305:20: note: in instantiation of function
      template specialization 'std::__1::allocator_traits<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<Coord, Coord>, void *> >
      >::construct<std::__1::pair<const Coord, Coord>, const std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >' requested
      here
    __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_),
                   ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:2021:29: note: in instantiation of function
      template specialization 'std::__1::__hash_table<std::__1::__hash_value_type<Coord, Coord>, std::__1::__unordered_map_hasher<Coord,
      std::__1::__hash_value_type<Coord, Coord>, std::__1::hash<Coord>, true>, std::__1::__unordered_map_equal<Coord, std::__1::__hash_value_type<Coord,
      Coord>, std::__1::equal_to<Coord>, true>, std::__1::allocator<std::__1::__hash_value_type<Coord, Coord> > >::__construct_node_hash<const
      std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >' requested here
        __node_holder __h = __construct_node_hash(__hash, _VSTD::forward<_Args>(__args)...);
                            ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/unordered_map:1386:21: note: in instantiation of function
      template specialization 'std::__1::__hash_table<std::__1::__hash_value_type<Coord, Coord>, std::__1::__unordered_map_hasher<Coord,
      std::__1::__hash_value_type<Coord, Coord>, std::__1::hash<Coord>, true>, std::__1::__unordered_map_equal<Coord, std::__1::__hash_value_type<Coord,
      Coord>, std::__1::equal_to<Coord>, true>, std::__1::allocator<std::__1::__hash_value_type<Coord, Coord> > >::__emplace_unique_key_args<Coord, const
      std::__1::piecewise_construct_t &, std::__1::tuple<const Coord &>, std::__1::tuple<> >' requested here
    return __table_.__emplace_unique_key_args(__k,
                    ^
lab1.cpp:341:14: note: in instantiation of member function 'std::__1::unordered_map<Coord, Coord, std::__1::hash<Coord>, std::__1::equal_to<Coord>,
      std::__1::allocator<std::__1::pair<const Coord, Coord> > >::operator[]' requested here
    came_from[start] = start;
             ^
lab1.cpp:34:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
class Coord{ 
      ^
lab1.cpp:34:7: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
lab1.cpp:39:9: note: candidate constructor not viable: requires 2 arguments, but 0 were provided
        Coord(int x1, int y1) {