Сортировка линейной структуры данных на месте

#c #list #iterator

Вопрос:

Как преобразовать эту функцию в функцию, которая сортирует список a на месте? В настоящее время у меня есть следующее:

 template<typename Iterator>
void LISTsort(Iterator curr, Iterator stop)
{
    //how to sort in place
}
 

Я не смог обвести вокруг пальца свою голову о том, как «вернуть» значения обратно в list a . Я знаю, что могу использовать цикл while и заменять каждого отдельного *curr и увеличивать итератор. Есть ли какой-нибудь способ сделать это без использования каких-либо циклов?.

Комментарии:

1. что не так с петлями?

2. P.S. это не сортировка на месте.

3. как насчет того, чтобы позвонить std::list::sort ?

Ответ №1:

std::list имеет функцию-член для сортировки. Это называется sort .

Есть ли какой-нибудь способ сделать это без использования каких-либо циклов?.

Единственный способ сортировки без использования циклов (рекурсивных или итеративных) — ограничить размер входных данных константой.

Комментарии:

1. мой плохой, я не знал, что в списке есть функция сортировки

2. @JayEstrera извините, что придираюсь к этому, но ваша ошибка заключалась не в том, что вы не знали о его существовании, проблема заключалась в том, что вы не просмотрели документацию std::list , чтобы найти его (я тоже этого не знал, но мне пришлось ее поискать)