使用copy()、ostream_iterator和reverse_iterator实现正反向输出

迭代器是STL算法的接口,而指针是迭代器,所以STL算法可是实现指针来对基于指针的非STL容器进行操作,例如数组。

#include <iostream>
#include <vector>
#include <iterator>
int main()
{
	using namespace std;

	int casts[10] = { 1,2,3,4,5,6,7,8,9,10 };
	vector<int> dice(10);
	// 正向输出
	copy(casts, casts + 10, dice.begin());
	ostream_iterator<int, char>	out_iter(cout, " ");
	copy(dice.begin(), dice.end(), out_iter);
	cout << endl;
// 反向输出第一种形式
	copy(dice.rbegin(), dice.rend(), out_iter);
	cout << endl;
// 反向输出第二种形式
	for (auto ri = dice.rbegin(); ri != dice.rend(); ++ri) {
		cout << *ri << ' ';
	}
	system("pause");
	return 0;

}

在这里插入图片描述

In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h: In instantiation of ‘constexpr bool __gnu_cxx::__ops::_Iter_less_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Iterator2 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’: /usr/include/c++/11/bits/stl_algo.h:5624:12: required from ‘constexpr _ForwardIterator std::__min_element(_ForwardIterator, _ForwardIterator, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’ /usr/include/c++/11/bits/stl_algo.h:5648:43: required from ‘constexpr _FIter std::min_element(_FIter, _FIter) [with _FIter = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’ a.cpp:46:27: required from here /usr/include/c++/11/bits/predefined_ops.h:45:23: error: no match for ‘operator<’ (operand types are ‘std::pair<double, Point>’ and ‘std::pair<double, Point>’) 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/stl_algobase.h:67, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/stl_iterator.h:1129:5: note: candidate: ‘template<class _IteratorL, class _IteratorR, class _Container> constexpr std::__detail::__synth3way_t<_IteratorR, _IteratorL> __gnu_cxx::operator<=>(const __gnu_cxx::__normal_iterator<_IteratorL, _Container>&, const __gnu_cxx::__normal_iterator<_IteratorR, _Container>&)’ (reversed) 1129 | operator<=>(const __normal_iterator<_IteratorL, _Container>& __lhs, | ^~~~~~~~ /usr/include/c++/11/bits/stl_iterator.h:1129:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const __gnu_cxx::__normal_iterator<_IteratorL, _Container>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/stl_algobase.h:67, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/stl_iterator.h:538:5: note: candidate: ‘template<class _IteratorL, class _IteratorR> requires three_way_comparable_with<_IteratorR, _IteratorL, std::partial_ordering> constexpr std::compare_three_way_result_t<_IteratorL, _IteratorR> std::operator<=>(const std::reverse_iterator<_IteratorL>&, const std::reverse_iterator<_IteratorR>&)’ (reversed) 538 | operator<=>(const reverse_iterator<_IteratorL>& __x, | ^~~~~~~~ /usr/include/c++/11/bits/stl_iterator.h:538:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const std::reverse_iterator<_IteratorL>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/stl_algobase.h:67, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/stl_iterator.h:1596:5: note: candidate: ‘template<class _IteratorL, class _IteratorR> requires three_way_comparable_with<_IteratorR, _IteratorL, std::partial_ordering> constexpr std::compare_three_way_result_t<_IteratorL, _IteratorR> std::operator<=>(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)’ (reversed) 1596 | operator<=>(const move_iterator<_IteratorL>& __x, | ^~~~~~~~ /usr/include/c++/11/bits/stl_iterator.h:1596:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const std::move_iterator<_IteratorL>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/basic_string.h:48, from /usr/include/c++/11/string:55, from /usr/include/c++/11/bits/locale_classes.h:40, from /usr/include/c++/11/bits/ios_base.h:41, from /usr/include/c++/11/ios:42, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/string_view:556:5: note: candidate: ‘template<class _CharT, class _Traits> constexpr decltype (__char_traits_cmp_cat<_Traits>(0)) std::operator<=>(std::basic_string_view<_CharT, _Traits>, std::__type_identity_t<std::basic_string_view<_CharT, _Traits> >)’ (reversed) 556 | operator<=>(basic_string_view<_CharT, _Traits> __x, | ^~~~~~~~ /usr/include/c++/11/string_view:556:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘std::basic_string_view<_CharT, _Traits>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/string:55, from /usr/include/c++/11/bits/locale_classes.h:40, from /usr/include/c++/11/bits/ios_base.h:41, from /usr/include/c++/11/ios:42, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/basic_string.h:6276:5: note: candidate: ‘template<class _CharT, class _Traits, class _Alloc> decltype (__char_traits_cmp_cat<_Traits>(0)) std::operator<=>(const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&, const _CharT*)’ (reversed) 6276 | operator<=>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, | ^~~~~~~~ /usr/include/c++/11/bits/basic_string.h:6276:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/unique_ptr.h:37, from /usr/include/c++/11/bits/locale_conv.h:41, from /usr/include/c++/11/locale:43, from /usr/include/c++/11/iomanip:43, from a.cpp:4: /usr/include/c++/11/tuple:1557:5: note: candidate: ‘template<class ... _Tps, class ... _Ups> constexpr std::common_comparison_category_t<decltype (std::__detail::__synth3way(declval<_Tps&>(), declval<_Ups&>()))...> std::operator<=>(const std::tuple<_Tps ...>&, const std::tuple<_UTypes ...>&)’ (reversed) 1557 | operator<=>(const tuple<_Tps...>& __t, const tuple<_Ups...>& __u) | ^~~~~~~~ /usr/include/c++/11/tuple:1557:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const std::tuple<_Tps ...>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/locale_conv.h:41, from /usr/include/c++/11/locale:43, from /usr/include/c++/11/iomanip:43, from a.cpp:4: /usr/include/c++/11/bits/unique_ptr.h:895:5: note: candidate: ‘template<class _Tp, class _Dp, class _Up, class _Ep> requires three_way_comparable_with<typename std::unique_ptr<_Tp, _Dp>::pointer, typename std::unique_ptr<_Up, _Ep>::pointer, std::partial_ordering> std::compare_three_way_result_t<typename std::unique_ptr<_Tp, _Dp>::pointer, typename std::unique_ptr<_Up, _Ep>::pointer> std::operator<=>(const std::unique_ptr<_Tp, _Dp>&, const std::unique_ptr<_Up, _Ep>&)’ (reversed) 895 | operator<=>(const unique_ptr<_Tp, _Dp>& __x, | ^~~~~~~~ /usr/include/c++/11/bits/unique_ptr.h:895:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const std::unique_ptr<_Tp, _Dp>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/locale_conv.h:41, from /usr/include/c++/11/locale:43, from /usr/include/c++/11/iomanip:43, from a.cpp:4: /usr/include/c++/11/bits/unique_ptr.h:903:5: note: candidate: ‘template<class _Tp, class _Dp> requires three_way_comparable<typename std::unique_ptr<_Tp, _Dp>::pointer, std::partial_ordering> std::compare_three_way_result_t<typename std::unique_ptr<_Tp, _Dp>::pointer> std::operator<=>(const std::unique_ptr<_Tp, _Dp>&, std::nullptr_t)’ (reversed) 903 | operator<=>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) | ^~~~~~~~ /usr/include/c++/11/bits/unique_ptr.h:903:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const std::unique_ptr<_Tp, _Dp>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/stl_algobase.h:67, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/stl_iterator.h:1146:5: note: candidate: ‘template<class _Iterator, class _Container> constexpr std::__detail::__synth3way_t<_T1> __gnu_cxx::operator<=>(const __gnu_cxx::__normal_iterator<_Iterator, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container>&)’ (rewritten) 1146 | operator<=>(const __normal_iterator<_Iterator, _Container>& __lhs, | ^~~~~~~~ /usr/include/c++/11/bits/stl_iterator.h:1146:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const __gnu_cxx::__normal_iterator<_Iterator, _Container>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/stl_algobase.h:64, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/stl_pair.h:473:5: note: candidate: ‘template<class _T1, class _T2> constexpr std::common_comparison_category_t<decltype (std::__detail::__synth3way(declval<_T1&>(), declval<_T1&>())), decltype (std::__detail::__synth3way(declval<_T2&>(), declval<_T2&>()))> std::operator<=>(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)’ (rewritten) 473 | operator<=>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) | ^~~~~~~~ /usr/include/c++/11/bits/stl_pair.h:473:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_pair.h:65, from /usr/include/c++/11/bits/stl_algobase.h:64, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/compare: In substitution of ‘template<class _T1, class _T2> constexpr std::common_comparison_category_t<decltype (std::__detail::__synth3way(declval<_T1&>(), declval<_T1&>())), decltype (std::__detail::__synth3way(declval<_T2&>(), declval<_T2&>()))> std::operator<=>(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&) [with _T1 = double; _T2 = Point]’: /usr/include/c++/11/bits/predefined_ops.h:45:23: required from ‘constexpr bool __gnu_cxx::__ops::_Iter_less_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Iterator2 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’ /usr/include/c++/11/bits/stl_algo.h:5624:12: required from ‘constexpr _ForwardIterator std::__min_element(_ForwardIterator, _ForwardIterator, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’ /usr/include/c++/11/bits/stl_algo.h:5648:43: required from ‘constexpr _FIter std::min_element(_FIter, _FIter) [with _FIter = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’ a.cpp:46:27: required from here /usr/include/c++/11/compare:915:41: error: no match for call to ‘(const std::__detail::_Synth3way) (Point&, Point&)’ 915 | = decltype(__detail::__synth3way(std::declval<_Tp&>(), | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ 916 | std::declval<_Up&>())); | ~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/11/compare:890:9: note: candidate: ‘template<class _Tp, class _Up> constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, const _Up&) const requires requires{{std::__detail::_Synth3way::operator()::__t < std::__detail::_Synth3way::operator()::__u} -> decltype(auto) [requires std::__detail::__boolean_testable<<placeholder>, >];{std::__detail::_Synth3way::operator()::__u < std::__detail::_Synth3way::operator()::__t} -> decltype(auto) [requires std::__detail::__boolean_testable<<placeholder>, >];}’ 890 | operator()(const _Tp& __t, const _Up& __u) const | ^~~~~~~~ /usr/include/c++/11/compare:890:9: note: template argument deduction/substitution failed: /usr/include/c++/11/compare:890:9: note: constraints not satisfied /usr/include/c++/11/compare: In substitution of ‘template<class _Tp, class _Up> constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, const _Up&) const requires requires{{__t < __u} -> decltype(auto) [requires std::__detail::__boolean_testable<<placeholder>, >];{__u < __t} -> decltype(auto) [requires std::__detail::__boolean_testable<<placeholder>, >];} [with _Tp = Point; _Up = Point]’: /usr/include/c++/11/compare:915:34: required by substitution of ‘template<class _T1, class _T2> constexpr std::common_comparison_category_t<decltype (std::__detail::__synth3way(declval<_T1&>(), declval<_T1&>())), decltype (std::__detail::__synth3way(declval<_T2&>(), declval<_T2&>()))> std::operator<=>(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&) [with _T1 = double; _T2 = Point]’ /usr/include/c++/11/bits/predefined_ops.h:45:23: required from ‘constexpr bool __gnu_cxx::__ops::_Iter_less_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Iterator2 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’ /usr/include/c++/11/bits/stl_algo.h:5624:12: required from ‘constexpr _ForwardIterator std::__min_element(_ForwardIterator, _ForwardIterator, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’ /usr/include/c++/11/bits/stl_algo.h:5648:43: required from ‘constexpr _FIter std::min_element(_FIter, _FIter) [with _FIter = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’ a.cpp:46:27: required from here /usr/include/c++/11/compare:890:2: required by the constraints of ‘template<class _Tp, class _Up> constexpr auto std::__detail::_Synth3way::operator()(const _Tp&, const _Up&) const requires requires{{__t < __u} -> decltype(auto) [requires std::__detail::__boolean_testable<<placeholder>, >];{__u < __t} -> decltype(auto) [requires std::__detail::__boolean_testable<<placeholder>, >];}’ /usr/include/c++/11/compare:892:11: in requirements [with _Up = Point; _Tp = Point] /usr/include/c++/11/compare:894:17: note: the required expression ‘(__t < __u)’ is invalid 894 | { __t < __u } -> __boolean_testable; | ~~~~^~~~~ /usr/include/c++/11/compare:895:17: note: the required expression ‘(__u < __t)’ is invalid 895 | { __u < __t } -> __boolean_testable; | ~~~~^~~~~ /usr/include/c++/11/compare: In substitution of ‘template<class _T1, class _T2> constexpr std::common_comparison_category_t<decltype (std::__detail::__synth3way(declval<_T1&>(), declval<_T1&>())), decltype (std::__detail::__synth3way(declval<_T2&>(), declval<_T2&>()))> std::operator<=>(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&) [with _T1 = double; _T2 = Point]’: /usr/include/c++/11/bits/predefined_ops.h:45:23: required from ‘constexpr bool __gnu_cxx::__ops::_Iter_less_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Iterator2 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’ /usr/include/c++/11/bits/stl_algo.h:5624:12: required from ‘constexpr _ForwardIterator std::__min_element(_ForwardIterator, _ForwardIterator, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’ /usr/include/c++/11/bits/stl_algo.h:5648:43: required from ‘constexpr _FIter std::min_element(_FIter, _FIter) [with _FIter = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’ a.cpp:46:27: required from here cc1plus: note: set ‘-fconcepts-diagnostics-depth=’ to at least 2 for more detail In file included from /usr/include/c++/11/bits/stl_algobase.h:67, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h: In instantiation of ‘constexpr bool __gnu_cxx::__ops::_Iter_less_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Iterator2 = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’: /usr/include/c++/11/bits/stl_algo.h:5624:12: required from ‘constexpr _ForwardIterator std::__min_element(_ForwardIterator, _ForwardIterator, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’ /usr/include/c++/11/bits/stl_algo.h:5648:43: required from ‘constexpr _FIter std::min_element(_FIter, _FIter) [with _FIter = __gnu_cxx::__normal_iterator<std::pair<double, Point>*, std::vector<std::pair<double, Point> > >]’ a.cpp:46:27: required from here /usr/include/c++/11/bits/stl_iterator.h:554:5: note: candidate: ‘template<class _Iterator> requires three_way_comparable<_Iterator, std::partial_ordering> constexpr std::compare_three_way_result_t<_Iterator, _Iterator> std::operator<=>(const std::reverse_iterator<_IteratorL>&, const std::reverse_iterator<_IteratorL>&)’ (rewritten) 554 | operator<=>(const reverse_iterator<_Iterator>& __x, | ^~~~~~~~ /usr/include/c++/11/bits/stl_iterator.h:554:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const std::reverse_iterator<_IteratorL>’ 45 | { return *__it1 < *__it2; } | ~~~~~~~^~~~~~~~ In file included from /usr/include/c++/11/bits/stl_algobase.h:67, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/stl_iterator.h:1655:5: note: candidate: ‘template<class _Iterator> requires three_way_comparable<_Iterator, std::partial_ordering> constexpr std::compare_three_way_result_t<_Iterator, _Iterator> std::operator<=>(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)’ (rewritten) 1655 | operator<=>(const move_iterator<_Iterator>& __x, | ^~~~~~~~ /usr/include/c++/11/bits/stl_iterator.h:1655:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/11/bits/stl_algobase.h:71, from /usr/include/c++/11/bits/char_traits.h:39, from /usr/include/c++/11/ios:40, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from a.cpp:1: /usr/include/c++/11/bits/predefined_ops.h:45:23: note: ‘std::pair<double, Point>’ is not derived from ‘const std::move_iterator<_IteratorL>’根据报错修改
最新发布
01-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子象限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值