Функция reverse для <list> в C++
reverseиспользуется в списке дляОбращение связанного спискаЭта функция — эффективная операция, уникальная для связанных списков.
reverseЭто функция-член класса-контейнера, используемая для изменения порядка элементов в связанном списке.
В list,reverseЕё временная сложность — O(n), и она не вызывает перемещения элементов, а только изменяет указатели.
Определения слов: reverseОно означает "reverse", то есть изменение порядка связанного списка на обратный.
Базовый синтаксис и параметры
Формат синтаксиса
void reverse();
Описание функции
- Возвращаемое значение:
void(Нет возвращаемого значения). - Действие: изменить порядок элементов в связанном списке на обратный.
Пример
Пример 1: Обращение связанного списка
Пример
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "Перед обращением: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
numbers.reverse();
std::cout << "После обращения: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "Перед обращением: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
numbers.reverse();
std::cout << "После обращения: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
Ожидаемый вывод:
反转前: 1 2 3 4 5 反转后: 5 4 3 2 1
Пример 2: Повторное обращение
Пример
#include <iostream>
#include <list>
int main() {
std::list<int> data = {10, 20, 30};
data.reverse();
std::cout << Первое обращение:;
for(int n : data) std::cout << n << " ";
std::cout << std::endl;
data.reverse();
std::cout << Второе обращение:;
for(int n : data) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> data = {10, 20, 30};
data.reverse();
std::cout << Первое обращение:;
for(int n : data) std::cout << n << " ";
std::cout << std::endl;
data.reverse();
std::cout << Второе обращение:;
for(int n : data) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
Ожидаемый вывод:
第一次反转: 30 20 10 第二次反转: 10 20 30
Другие расширения