• std::map使用结构体自定义键值


    使用STL中的map时候,有时候需要使用结构题自定义键值,比如想统计点的坐标出现的次数

    struct Node{
        int x,y;
    };
    
    ......
    
    map<Node,int>mp;
    mp[(Node){x,y}]++;
    

      这样子的话,会出现一堆报错

    c:mingwlibgccmingw324.8.1includec++itsstl_function.h||In instantiation of 'bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = Node]':|
    c:mingwlibgccmingw324.8.1includec++itsstl_map.h|483|required from 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](std::map<_Key, _Tp, _Compare, _Alloc>::key_type&&) [with _Key = Node; _Tp = int; _Compare = std::less<Node>; _Alloc = std::allocator<std::pair<const Node, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = Node]'|
    E:Programming Designpracticeceshi.cpp|27|required from here|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|error: no match for 'operator<' (operand types are 'const Node' and 'const Node')|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note: candidates are:|
    c:mingwlibgccmingw324.8.1includec++itsstl_pair.h|220|note: template<class _T1, class _T2> constexpr bool std::operator<(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_pair.h|220|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::pair<_T1, _T2>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_iterator.h|297|note: template<class _Iterator> bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_iterator.h|297|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::reverse_iterator<_Iterator>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_iterator.h|347|note: template<class _IteratorL, class _IteratorR> bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_iterator.h|347|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::reverse_iterator<_Iterator>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_iterator.h|1055|note: template<class _IteratorL, class _IteratorR> bool std::operator<(const std::move_iterator<_Iterator>&, const std::move_iterator<_IteratorR>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_iterator.h|1055|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::move_iterator<_Iterator>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_iterator.h|1061|note: template<class _Iterator> bool std::operator<(const std::move_iterator<_Iterator>&, const std::move_iterator<_Iterator>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_iterator.h|1061|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::move_iterator<_Iterator>'|
    c:mingwlibgccmingw324.8.1includec++itsasic_string.h|2569|note: template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const std::basic_string<_CharT, _Traits, _Alloc>&, const std::basic_string<_CharT, _Traits, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsasic_string.h|2569|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++itsasic_string.h|2581|note: template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const std::basic_string<_CharT, _Traits, _Alloc>&, const _CharT*)|
    c:mingwlibgccmingw324.8.1includec++itsasic_string.h|2581|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++itsasic_string.h|2593|note: template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const _CharT*, const std::basic_string<_CharT, _Traits, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsasic_string.h|2593|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   mismatched types 'const _CharT*' and 'Node'|
    c:mingwlibgccmingw324.8.1includec++itsstl_vector.h|1420|note: template<class _Tp, class _Alloc> bool std::operator<(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_vector.h|1420|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::vector<_Tp, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++array|238|note: template<class _Tp, unsigned int _Nm> bool std::operator<(const std::array<_Tp, _Nm>&, const std::array<_Tp, _Nm>&)|
    c:mingwlibgccmingw324.8.1includec++array|238|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::array<_Tp, _Nm>'|
    c:mingwlibgccmingw324.8.1includec++	uple|822|note: template<class ... _TElements, class ... _UElements> constexpr bool std::operator<(const std::tuple<_Elements ...>&, const std::tuple<_Elements ...>&)|
    c:mingwlibgccmingw324.8.1includec++	uple|822|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::tuple<_Elements ...>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_deque.h|273|note: template<class _Tp, class _Ref, class _Ptr> bool std::operator<(const std::_Deque_iterator<_Tp, _Ref, _Ptr>&, const std::_Deque_iterator<_Tp, _Ref, _Ptr>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_deque.h|273|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::_Deque_iterator<_Tp, _Ref, _Ptr>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_deque.h|281|note: template<class _Tp, class _RefL, class _PtrL, class _RefR, class _PtrR> bool std::operator<(const std::_Deque_iterator<_Tp, _Ref, _Ptr>&, const std::_Deque_iterator<_Tp, _RefR, _PtrR>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_deque.h|281|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::_Deque_iterator<_Tp, _Ref, _Ptr>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_deque.h|1975|note: template<class _Tp, class _Alloc> bool std::operator<(const std::deque<_Tp, _Alloc>&, const std::deque<_Tp, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_deque.h|1975|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::deque<_Tp, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_list.h|1631|note: template<class _Tp, class _Alloc> bool std::operator<(const std::list<_Tp, _Alloc>&, const std::list<_Tp, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_list.h|1631|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::list<_Tp, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_tree.h|914|note: template<class _Key, class _Val, class _KeyOfValue, class _Compare, class _Alloc> bool std::operator<(const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&, const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_tree.h|914|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_map.h|978|note: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator<(const std::map<_Key, _Tp, _Compare, _Alloc>&, const std::map<_Key, _Tp, _Compare, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_map.h|978|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::map<_Key, _Tp, _Compare, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_multimap.h|880|note: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator<(const std::multimap<_Key, _Tp, _Compare, _Alloc>&, const std::multimap<_Key, _Tp, _Compare, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_multimap.h|880|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::multimap<_Key, _Tp, _Compare, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++itsunique_ptr.h|523|note: template<class _Tp, class _Dp, class _Up, class _Ep> bool std::operator<(const std::unique_ptr<_Tp, _Dp>&, const std::unique_ptr<_Up, _Ep>&)|
    c:mingwlibgccmingw324.8.1includec++itsunique_ptr.h|523|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::unique_ptr<_Tp, _Dp>'|
    c:mingwlibgccmingw324.8.1includec++itsunique_ptr.h|534|note: template<class _Tp, class _Dp> bool std::operator<(const std::unique_ptr<_Tp, _Dp>&, std::nullptr_t)|
    c:mingwlibgccmingw324.8.1includec++itsunique_ptr.h|534|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::unique_ptr<_Tp, _Dp>'|
    c:mingwlibgccmingw324.8.1includec++itsunique_ptr.h|540|note: template<class _Tp, class _Dp> bool std::operator<(std::nullptr_t, const std::unique_ptr<_Tp, _Dp>&)|
    c:mingwlibgccmingw324.8.1includec++itsunique_ptr.h|540|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   cannot convert '__x' (type 'const Node') to type 'std::nullptr_t'|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr_base.h|1090|note: template<class _Tp1, class _Tp2, __gnu_cxx::_Lock_policy _Lp> bool std::operator<(const std::__shared_ptr<_Tp1, _Lp>&, const std::__shared_ptr<_Tp2, _Lp>&)|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr_base.h|1090|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::__shared_ptr<_Tp1, _Lp>'|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr_base.h|1099|note: template<class _Tp, __gnu_cxx::_Lock_policy _Lp> bool std::operator<(const std::__shared_ptr<_Tp, _Lp>&, std::nullptr_t)|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr_base.h|1099|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::__shared_ptr<_Tp, _Lp>'|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr_base.h|1104|note: template<class _Tp, __gnu_cxx::_Lock_policy _Lp> bool std::operator<(std::nullptr_t, const std::__shared_ptr<_Tp, _Lp>&)|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr_base.h|1104|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   cannot convert '__x' (type 'const Node') to type 'std::nullptr_t'|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr.h|359|note: template<class _Tp1, class _Tp2> bool std::operator<(const std::shared_ptr<_Tp1>&, const std::shared_ptr<_Tp2>&)|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr.h|359|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::shared_ptr<_Tp1>'|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr.h|368|note: template<class _Tp> bool std::operator<(const std::shared_ptr<_Tp1>&, std::nullptr_t)|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr.h|368|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::shared_ptr<_Tp1>'|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr.h|373|note: template<class _Tp> bool std::operator<(std::nullptr_t, const std::shared_ptr<_Tp1>&)|
    c:mingwlibgccmingw324.8.1includec++itsshared_ptr.h|373|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   cannot convert '__x' (type 'const Node') to type 'std::nullptr_t'|
    c:mingwlibgccmingw324.8.1includec++itsstl_queue.h|286|note: template<class _Tp, class _Seq> bool std::operator<(const std::queue<_Tp, _Seq>&, const std::queue<_Tp, _Seq>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_queue.h|286|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::queue<_Tp, _Seq>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_set.h|769|note: template<class _Key, class _Compare, class _Alloc> bool std::operator<(const std::set<_Key, _Compare, _Alloc>&, const std::set<_Key, _Compare, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_set.h|769|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::set<_Key, _Compare, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_multiset.h|754|note: template<class _Key, class _Compare, class _Alloc> bool std::operator<(const std::multiset<_Key, _Compare, _Alloc>&, const std::multiset<_Key, _Compare, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_multiset.h|754|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::multiset<_Key, _Compare, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++itsstl_stack.h|261|note: template<class _Tp, class _Seq> bool std::operator<(const std::stack<_Tp, _Seq>&, const std::stack<_Tp, _Seq>&)|
    c:mingwlibgccmingw324.8.1includec++itsstl_stack.h|261|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::stack<_Tp, _Seq>'|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note: template<class _Dom1, class _Dom2> std::_Expr<std::_BinClos<std::__less, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__less, typename _Dom1::value_type>::result_type> std::operator<(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::_Expr<_Dom2, typename _Dom2::value_type>&)|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note: template<class _Dom> std::_Expr<std::_BinClos<std::__less, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__less, typename _Dom1::value_type>::result_type> std::operator<(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note: template<class _Dom> std::_Expr<std::_BinClos<std::__less, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__less, typename _Dom1::value_type>::result_type> std::operator<(const typename _Dom::value_type&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note: template<class _Dom> std::_Expr<std::_BinClos<std::__less, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__less, typename _Dom1::value_type>::result_type> std::operator<(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::valarray<typename _Dom::value_type>&)|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note: template<class _Dom> std::_Expr<std::_BinClos<std::__less, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__less, typename _Dom1::value_type>::result_type> std::operator<(const std::valarray<typename _Dom::value_type>&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)|
    c:mingwlibgccmingw324.8.1includec++itsvalarray_after.h|416|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::valarray<typename _Dom::value_type>'|
    c:mingwlibgccmingw324.8.1includec++valarray|1168|note: template<class _Tp> std::_Expr<std::_BinClos<std::__less, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__less, _Tp>::result_type> std::operator<(const std::valarray<_Tp>&, const std::valarray<_Tp>&)|
    c:mingwlibgccmingw324.8.1includec++valarray|1168|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::valarray<_Tp>'|
    c:mingwlibgccmingw324.8.1includec++valarray|1168|note: template<class _Tp> std::_Expr<std::_BinClos<std::__less, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__less, _Tp>::result_type> std::operator<(const std::valarray<_Tp>&, const _Tp&)|
    c:mingwlibgccmingw324.8.1includec++valarray|1168|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::valarray<_Tp>'|
    c:mingwlibgccmingw324.8.1includec++valarray|1168|note: template<class _Tp> std::_Expr<std::_BinClos<std::__less, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__less, _Tp>::result_type> std::operator<(const _Tp&, const std::valarray<_Tp>&)|
    c:mingwlibgccmingw324.8.1includec++valarray|1168|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::valarray<_Tp>'|
    c:mingwlibgccmingw324.8.1includec++system_error|177|note: bool std::operator<(const std::error_code&, const std::error_code&)|
    c:mingwlibgccmingw324.8.1includec++system_error|177|note:   no known conversion for argument 1 from 'const Node' to 'const std::error_code&'|
    c:mingwlibgccmingw324.8.1includec++system_error|250|note: bool std::operator<(const std::error_condition&, const std::error_condition&)|
    c:mingwlibgccmingw324.8.1includec++system_error|250|note:   no known conversion for argument 1 from 'const Node' to 'const std::error_condition&'|
    c:mingwlibgccmingw324.8.1includec++itsforward_list.h|1359|note: template<class _Tp, class _Alloc> bool std::operator<(const std::forward_list<_Tp, _Alloc>&, const std::forward_list<_Tp, _Alloc>&)|
    c:mingwlibgccmingw324.8.1includec++itsforward_list.h|1359|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::forward_list<_Tp, _Alloc>'|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|879|note: template<class _BiIter> bool std::operator<(const std::sub_match<_BiIter>&, const std::sub_match<_BiIter>&)|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|879|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::sub_match<_BiIter>'|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|955|note: template<class _Bi_iter, class _Ch_traits, class _Ch_alloc> bool std::operator<(std::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>&, const std::sub_match<_BiIter>&)|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|955|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'std::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>'|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1029|note: template<class _Bi_iter, class _Ch_traits, class _Ch_alloc> bool std::operator<(const std::sub_match<_BiIter>&, std::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>&)|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1029|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::sub_match<_BiIter>'|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1103|note: template<class _Bi_iter> bool std::operator<(const typename std::iterator_traits<_Iter>::value_type*, const std::sub_match<_BiIter>&)|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1103|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   mismatched types 'const typename std::iterator_traits<_Iter>::value_type*' and 'Node'|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1177|note: template<class _Bi_iter> bool std::operator<(const std::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type*)|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1177|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::sub_match<_BiIter>'|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1254|note: template<class _Bi_iter> bool std::operator<(const typename std::iterator_traits<_Iter>::value_type&, const std::sub_match<_BiIter>&)|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1254|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::sub_match<_BiIter>'|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1334|note: template<class _Bi_iter> bool std::operator<(const std::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type&)|
    c:mingwlibgccmingw324.8.1includec++its
    egex.h|1334|note:   template argument deduction/substitution failed:|
    c:mingwlibgccmingw324.8.1includec++itsstl_function.h|235|note:   'const Node' is not derived from 'const std::sub_match<_BiIter>'|
    ||=== Build failed: 1 error(s), 3 warning(s) (0 minute(s), 4 second(s)) ===|
    

      看着似乎满屏错误,其实就是少了一个键值比较函数,因为我们知道map插入键值后默认从小到大排序,使用自定义结构体作为键值,但是没有自定义比较函数的话,编译器无法为插入的元素排序。

    struct Node{
        int x,y;
        bool operator < (const Node &a)const
        {
            if (x == a.x)   return y < a.y;
            else return x < a.x;
        }
    };
    

      这样子修改后,就可以成功运行了。其实从这个例子,我们可以类比用结构体自定义优先队列,也是需要自写比较函数的。

  • 相关阅读:
    python第四十二天 socket ---ssh
    python第四十一天---作业:简单FTP
    python第三十七天--异常--socket
    python第三十六天-----类中的特殊成员方法
    python第三十五天-----作业完成--学校选课系统
    python第三十三天----静态方法、类方法、属性方法
    RESTful Web Services初探
    OLAT & OLTP
    Solr4.8.0源码分析(7)之Solr SPI
    Solr4.8.0源码分析(6)之非排序查询
  • 原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/6790718.html
Copyright © 2020-2023  润新知