Warum ändert sich std :: is_sorted () zwischen Anrufen mit Clang
Posted: 12 Apr 2025, 23:28
Ich habe einen Code, der ein seltsames Verhalten zeigt, wenn std :: is_sorted () zweimal hintereinander aufgerufen wird. Das Ergebnis ändert sich! Der Faustanruf gibt false zurück und der zweite Anruf gibt true zurück. Dies geschieht mit der folgenden < /p>
Code: Select all
Apple clang version 15.0.0 (clang-1500.3.9.4)
Code: Select all
Ubuntu clang version 15.0.7
Code: Select all
Ubuntu clang version 18.1.3 (1ubuntu1)
Code: Select all
#include
#include
#include
#include
template
void insertion_sort(T begin, T end)
{
T current = begin;
++current;
while(current < end) {
auto key = *current;
auto j = current - 1;
while(j >= begin && *j > key) {
*(j+1) = *j;
--j;
}
*(j+1) = key;
current++;
}
}
int main(int argc, char* argv[])
{
std::array a{5, 2, 4, 6, 1, 3};
insertion_sort(a.begin(), a.end());
std::cout