Mxqz 语法
  • 板块学术版
  • 楼主__er
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/13 10:08
  • 上次更新2023/11/3 10:10:55
查看原帖
Mxqz 语法
713955
__er楼主2023/7/13 10:08

如下:

stable_sort(h.begin(), h.end(), [&](pair<int, int> x, pair<int, int> y) {return x.second > y.second;});

CE

其中 h 为 __gnu_pbds::gp_hash_table<int, int>

报错信息:

In file included from E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/algorithm:61,
                 from E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32/bits/stdc++.h:51,
                 from 棰pp:1:
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h: In instantiation of 'void std::__stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_pbds::detail::gp_ht_map<int, int, tr1::hash<int>, equal_to<int>, allocator<char>, false, __gnu_pbds::direct_mask_range_hashing<>, __gnu_pbds::linear_probe_fn<long long unsigned int>, __gnu_pbds::hash_standard_resize_policy<__gnu_pbds::hash_exponential_size_policy<>, __gnu_pbds::hash_load_check_resize_trigger<>, false, long long unsigned int> >::iterator_; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<main()::<lambda(pair<int, int>, pair<int, int>)> >]':
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:5119:36:   required from 'void std::stable_sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_pbds::detail::gp_ht_map<int, int, tr1::hash<int>, equal_to<int>, allocator<char>, false, __gnu_pbds::direct_mask_range_hashing<>, __gnu_pbds::linear_probe_fn<long long unsigned int>, __gnu_pbds::hash_standard_resize_policy<__gnu_pbds::hash_exponential_size_policy<>, __gnu_pbds::hash_load_check_resize_trigger<>, false, long long unsigned int> >::iterator_; _Compare = main()::<lambda(pair<int, int>, pair<int, int>)>]'
棰pp:12:16:   required from here
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:5038:38: error: no match for 'operator-' (operand types are '__gnu_pbds::detail::gp_ht_map<int, int, std::tr1::hash<int>, std::equal_to<int>, std::allocator<char>, false, __gnu_pbds::direct_mask_range_hashing<>, __gnu_pbds::linear_probe_fn<long long unsigned int>, __gnu_pbds::hash_standard_resize_policy<__gnu_pbds::hash_exponential_size_policy<>, __gnu_pbds::hash_load_check_resize_trigger<>, false, long long unsigned int> >::iterator_' and '__gnu_pbds::detail::gp_ht_map<int, int, std::tr1::hash<int>, std::equal_to<int>, std::allocator<char>, false, __gnu_pbds::direct_mask_range_hashing<>, __gnu_pbds::linear_probe_fn<long long unsigned int>, __gnu_pbds::hash_standard_resize_policy<__gnu_pbds::hash_exponential_size_policy<>, __gnu_pbds::hash_load_check_resize_trigger<>, false, long long unsigned int> >::iterator_')
 5038 |       _TmpBuf __buf(__first, (__last - __first + 1) / 2);
      |                               ~~~~~~~^~~~~~~~~
In file included from E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:67,
                 from E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/algorithm:60:
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator.h:625:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr decltype ((__y.base() - __x.base())) std::operator-(const reverse_iterator<_Iterator>&, const reverse_iterator<_IteratorR>&)'
  625 |     operator-(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator.h:625:5: note:   template argument deduction/substitution failed:
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:5038:38: note:   '__gnu_pbds::detail::gp_ht_map<int, int, std::tr1::hash<int>, std::equal_to<int>, std::allocator<char>, false, __gnu_pbds::direct_mask_range_hashing<>, __gnu_pbds::linear_probe_fn<long long unsigned int>, __gnu_pbds::hash_standard_resize_policy<__gnu_pbds::hash_exponential_size_policy<>, __gnu_pbds::hash_load_check_resize_trigger<>, false, long long unsigned int> >::iterator_' is not derived from 'const std::reverse_iterator<_Iterator>'
 5038 |       _TmpBuf __buf(__first, (__last - __first + 1) / 2);
      |                               ~~~~~~~^~~~~~~~~
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator.h:1800:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr decltype ((__x.base() - __y.base())) std::operator-(const move_iterator<_IteratorL>&, const move_iterator<_IteratorR>&)'
 1800 |     operator-(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator.h:1800:5: note:   template argument deduction/substitution failed:
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:5038:38: note:   '__gnu_pbds::detail::gp_ht_map<int, int, std::tr1::hash<int>, std::equal_to<int>, std::allocator<char>, false, __gnu_pbds::direct_mask_range_hashing<>, __gnu_pbds::linear_probe_fn<long long unsigned int>, __gnu_pbds::hash_standard_resize_policy<__gnu_pbds::hash_exponential_size_policy<>, __gnu_pbds::hash_load_check_resize_trigger<>, false, long long unsigned int> >::iterator_' is not derived from 'const std::move_iterator<_IteratorL>'
 5038 |       _TmpBuf __buf(__first, (__last - __first + 1) / 2);
      |                               ~~~~~~~^~~~~~~~~
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:5042:45: error: no match for 'operator+' (operand types are '__gnu_pbds::detail::gp_ht_map<int, int, std::tr1::hash<int>, std::equal_to<int>, std::allocator<char>, false, __gnu_pbds::direct_mask_range_hashing<>, __gnu_pbds::linear_probe_fn<long long unsigned int>, __gnu_pbds::hash_standard_resize_policy<__gnu_pbds::hash_exponential_size_policy<>, __gnu_pbds::hash_load_check_resize_trigger<>, false, long long unsigned int> >::iterator_' and '_DistanceType' {aka 'long long int'})
 5042 |                                     __first + _DistanceType(__buf.size()),
      |                                     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator.h:634:5: note: candidate: 'template<class _Iterator> constexpr std::reverse_iterator<_Iterator> std::operator+(typename reverse_iterator<_Iterator>::difference_type, const reverse_iterator<_Iterator>&)'
  634 |     operator+(typename reverse_iterator<_Iterator>::difference_type __n,
      |     ^~~~~~~~
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator.h:634:5: note:   template argument deduction/substitution failed:
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:5042:45: note:   mismatched types 'const std::reverse_iterator<_Iterator>' and '_DistanceType' {aka 'long long int'}
 5042 |                                     __first + _DistanceType(__buf.size()),
      |                                     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator.h:1808:5: note: candidate: 'template<class _Iterator> constexpr std::move_iterator<_IteratorL> std::operator+(typename move_iterator<_IteratorL>::difference_type, const move_iterator<_IteratorL>&)'
 1808 |     operator+(typename move_iterator<_Iterator>::difference_type __n,
      |     ^~~~~~~~
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator.h:1808:5: note:   template argument deduction/substitution failed:
E:/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:5042:45: note:   mismatched types 'const std::move_iterator<_IteratorL>' and '_DistanceType' {aka 'long long int'}
 5042 |                                     __first + _DistanceType(__buf.size()),
      |                                     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2023/7/13 10:08
加载中...