STL之iter_swap & swap

本文介绍了一种使用模板函数实现的迭代器元素交换方法。通过两次模板定义,此方法能够高效地在不同类型的迭代器间进行元素值的交换操作。文章详细展示了如何利用模板特性和类型推导来完成这一任务。
template <class ForwardIterator1, class ForwardIterator2, class T>                
inline void __iter_swap(ForwardIterator1 a, ForwardIterator2 b, T*) {             
    T tmp = *a;                                                                   
    *a = *b;                                                                      
    *b = tmp;                                                                     
}                                                                                 
                                                                                  
template <class ForwardIterator1, class ForwardIterator2>                         
inline void iter_swap(ForwardIterator1 a, ForwardIterator2 b) {                   
    __iter_swap(a, b, value_type(a));                                             
} 

g++.exe D:\clion\kexin\countMid\C++_multi_files_20251012165246089\main.cpp -o main In file included from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/algorithm:61, from D:\clion\kexin\countMid\C++_multi_files_20251012165246089\solution.cpp:7, from D:\clion\kexin\countMid\C++_multi_files_20251012165246089\main.cpp:12: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h: In instantiation of &#39;void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39;: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1859:25: required from &#39;void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1950:31: required from &#39;void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4861:18: required from &#39;void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:\clion\kexin\countMid\C++_multi_files_20251012165246089\solution.cpp:18:13: required from here D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1824:24: error: assignment of read-only location &#39;__first.__gnu_cxx::__normal_iterator&lt;const int*, std::vector&lt;int&gt; &gt;::operator*()&#39; 1824 | *__first = _GLIBCXX_MOVE(__val); | ^ In file included from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:61: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_heap.h: In instantiation of &#39;void std::__pop_heap(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare&amp;) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39;: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1638:19: required from &#39;void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1910:25: required from &#39;void std::__partial_sort(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1926:27: required from &#39;void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Size = long long int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1947:25: required from &#39;void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4861:18: required from &#39;void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:\clion\kexin\countMid\C++_multi_files_20251012165246089\solution.cpp:18:13: required from here D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_heap.h:263:17: error: assignment of read-only location &#39;__result.__gnu_cxx::__normal_iterator&lt;const int*, std::vector&lt;int&gt; &gt;::operator*()&#39; 263 | *__result = _GLIBCXX_MOVE(*__first); | ^ In file included from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/string:51, from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/locale_classes.h:40, from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/ios_base.h:41, from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/ios:44, from D:\clion\kexin\countMid\C++_multi_files_20251012165246089\main.cpp:7: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h: In instantiation of &#39;void std::iter_swap(_ForwardIterator1, _ForwardIterator2) [with _ForwardIterator1 = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _ForwardIterator2 = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39;: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:91:20: required from &#39;void std::__move_median_to_first(_Iterator, _Iterator, _Iterator, _Iterator, _Compare) [with _Iterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1897:34: required from &#39;_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1931:38: required from &#39;void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Size = long long int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1947:25: required from &#39;void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4861:18: required from &#39;void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:\clion\kexin\countMid\C++_multi_files_20251012165246089\solution.cpp:18:13: required from here D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:185:11: error: no matching function for call to &#39;swap(const int&amp;, const int&amp;)&#39; 185 | swap(*__a, *__b); | ~~~~^~~~~~~~~~~~ In file included from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/exception:164, from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/ios:41: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/exception_ptr.h:230:5: note: candidate: &#39;void std::__exception_ptr::swap(exception_ptr&amp;, exception_ptr&amp;)&#39; 230 | swap(exception_ptr&amp; __lhs, exception_ptr&amp; __rhs) | ^~~~ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/exception_ptr.h:230:25: note: no known conversion for argument 1 from &#39;const int&#39; to &#39;std::__exception_ptr::exception_ptr&amp;&#39; 230 | swap(exception_ptr&amp; __lhs, exception_ptr&amp; __rhs) | ~~~~~~~~~~~~~~~^~~~~ In file included from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/exception_ptr.h:41: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/move.h:196:5: note: candidate: &#39;template&lt;class _Tp&gt; std::_Require&lt;std::__not_&lt;std::__is_tuple_like&lt;_Tp&gt; &gt;, std::is_move_constructible&lt;_Tp&gt;, std::is_move_assignable&lt;_Tp&gt; &gt; std::swap(_Tp&amp;, _Tp&amp;)&#39; 196 | swap(_Tp&amp; __a, _Tp&amp; __b) | ^~~~ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/move.h:196:5: note: template argument deduction/substitution failed: In file included from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/move.h:57: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/type_traits: In substitution of &#39;template&lt;bool _Cond, class _Tp&gt; using std::__enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = void]&#39;: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/type_traits:2224:11: required by substitution of &#39;template&lt;class ... _Cond&gt; using std::_Require = std::__enable_if_t&lt;std::__and_&lt;_Bn&gt;::value&gt; [with _Cond = {std::__not_&lt;std::__is_tuple_like&lt;const int&gt; &gt;, std::is_move_constructible&lt;const int&gt;, std::is_move_assignable&lt;const int&gt;}]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/move.h:196:5: required by substitution of &#39;template&lt;class _Tp&gt; std::_Require&lt;std::__not_&lt;std::__is_tuple_like&lt;_Tp&gt; &gt;, std::is_move_constructible&lt;_Tp&gt;, std::is_move_assignable&lt;_Tp&gt; &gt; std::swap(_Tp&amp;, _Tp&amp;) [with _Tp = const int]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:185:11: required from &#39;void std::iter_swap(_ForwardIterator1, _ForwardIterator2) [with _ForwardIterator1 = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _ForwardIterator2 = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:91:20: required from &#39;void std::__move_median_to_first(_Iterator, _Iterator, _Iterator, _Iterator, _Compare) [with _Iterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1897:34: required from &#39;_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1931:38: required from &#39;void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Size = long long int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1947:25: required from &#39;void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4861:18: required from &#39;void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:\clion\kexin\countMid\C++_multi_files_20251012165246089\solution.cpp:18:13: required from here D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/type_traits:116:11: error: no type named &#39;type&#39; in &#39;struct std::enable_if&lt;false, void&gt;&#39; 116 | using __enable_if_t = typename enable_if&lt;_Cond, _Tp&gt;::type; | ^~~~~~~~~~~~~ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h: In instantiation of &#39;void std::iter_swap(_ForwardIterator1, _ForwardIterator2) [with _ForwardIterator1 = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _ForwardIterator2 = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39;: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:91:20: required from &#39;void std::__move_median_to_first(_Iterator, _Iterator, _Iterator, _Iterator, _Compare) [with _Iterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1897:34: required from &#39;_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1931:38: required from &#39;void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Size = long long int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1947:25: required from &#39;void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4861:18: required from &#39;void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:\clion\kexin\countMid\C++_multi_files_20251012165246089\solution.cpp:18:13: required from here D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/move.h:220:5: note: candidate: &#39;template&lt;class _Tp, long long unsigned int _Nm&gt; std::__enable_if_t&lt;std::__is_swappable&lt;_Tp&gt;::value&gt; std::swap(_Tp (&amp;)[_Nm], _Tp (&amp;)[_Nm])&#39; 220 | swap(_Tp (&amp;__a)[_Nm], _Tp (&amp;__b)[_Nm]) | ^~~~ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/move.h:220:5: note: template argument deduction/substitution failed: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:185:11: note: mismatched types &#39;_Tp [_Nm]&#39; and &#39;const int&#39; 185 | swap(*__a, *__b); | ~~~~^~~~~~~~~~~~ In file included from D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:64: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_pair.h:879:5: note: candidate: &#39;template&lt;class _T1, class _T2&gt; typename std::enable_if&lt;std::__and_&lt;std::__is_swappable&lt;_T1&gt;, std::__is_swappable&lt;_T2&gt; &gt;::value&gt;::type std::swap(pair&lt;_T1, _T2&gt;&amp;, pair&lt;_T1, _T2&gt;&amp;)&#39; 879 | swap(pair&lt;_T1, _T2&gt;&amp; __x, pair&lt;_T1, _T2&gt;&amp; __y) | ^~~~ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_pair.h:879:5: note: template argument deduction/substitution failed: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:185:11: note: mismatched types &#39;std::pair&lt;_T1, _T2&gt;&#39; and &#39;const int&#39; 185 | swap(*__a, *__b); | ~~~~^~~~~~~~~~~~ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_pair.h:896:5: note: candidate: &#39;template&lt;class _T1, class _T2&gt; typename std::enable_if&lt;(! std::__and_&lt;std::__is_swappable&lt;_T1&gt;, std::__is_swappable&lt;_T2&gt; &gt;::value)&gt;::type std::swap(pair&lt;_T1, _T2&gt;&amp;, pair&lt;_T1, _T2&gt;&amp;)&#39; (deleted) 896 | swap(pair&lt;_T1, _T2&gt;&amp;, pair&lt;_T1, _T2&gt;&amp;) = delete; | ^~~~ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_pair.h:896:5: note: template argument deduction/substitution failed: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:185:11: note: mismatched types &#39;std::pair&lt;_T1, _T2&gt;&#39; and &#39;const int&#39; 185 | swap(*__a, *__b); | ~~~~^~~~~~~~~~~~ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_heap.h: In instantiation of &#39;void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Distance = long long int; _Tp = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39;: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_heap.h:356:22: required from &#39;void std::__make_heap(_RandomAccessIterator, _RandomAccessIterator, _Compare&amp;) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1635:23: required from &#39;void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1910:25: required from &#39;void std::__partial_sort(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1926:27: required from &#39;void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Size = long long int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1947:25: required from &#39;void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4861:18: required from &#39;void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:\clion\kexin\countMid\C++_multi_files_20251012165246089\solution.cpp:18:13: required from here D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_heap.h:235:36: error: assignment of read-only location &#39;__first.__gnu_cxx::__normal_iterator&lt;const int*, std::vector&lt;int&gt; &gt;::operator+(__holeIndex).__gnu_cxx::__normal_iterator&lt;const int*, std::vector&lt;int&gt; &gt;::operator*()&#39; 235 | *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __secondChild)); | ^ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_heap.h:241:36: error: assignment of read-only location &#39;__first.__gnu_cxx::__normal_iterator&lt;const int*, std::vector&lt;int&gt; &gt;::operator+(__holeIndex).__gnu_cxx::__normal_iterator&lt;const int*, std::vector&lt;int&gt; &gt;::operator*()&#39; 241 | *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first | ^ D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h: In instantiation of &#39;static _Up* std::__copy_move_backward&lt;_IsMove, true, std::random_access_iterator_tag&gt;::__copy_move_b(_Tp*, _Tp*, _Up*) [with _Tp = const int; _Up = const int; bool _IsMove = true]&#39;: D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:769:37: required from &#39;_BI2 std::__copy_move_backward_a2(_BI1, _BI1, _BI2) [with bool _IsMove = true; _BI1 = const int*; _BI2 = const int*]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:778:51: required from &#39;_BI2 std::__copy_move_backward_a1(_BI1, _BI1, _BI2) [with bool _IsMove = true; _BI1 = const int*; _BI2 = const int*]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:809:5: required from &#39;_OI std::__copy_move_backward_a(_II, _II, _OI) [with bool _IsMove = true; _II = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _OI = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:901:47: required from &#39;_BI2 std::move_backward(_BI1, _BI1, _BI2) [with _BI1 = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _BI2 = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1823:8: required from &#39;void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1859:25: required from &#39;void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:1950:31: required from &#39;void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;; _Compare = __gnu_cxx::__ops::_Iter_less_iter]&#39; D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4861:18: required from &#39;void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator&lt;const int*, vector&lt;int&gt; &gt;]&#39; D:\clion\kexin\countMid\C++_multi_files_20251012165246089\solution.cpp:18:13: required from here D:/clion/CLion 2025.1.3/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:748:40: error: invalid conversion from &#39;const void*&#39; to &#39;void*&#39; [-fpermissive] 748 | __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); | ~~~~~~~~~^~~~~~ | | | const void* &lt;built-in&gt;: note: initializing argument 1 of &#39;void* __builtin_memmove(void*, const void*, long long unsigned int)&#39; 进程已结束,退出代码为 1 为什么构建失败
最新发布
10-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值