Функция back C++ <array>
В различных операциях с массивом,backявляется очень практичной функцией, используемой дляполучения последнего элемента。
backявляется функцией-членом классов-контейнеров, используемой длявозврата последнего элемента контейнера. Она эквивалентнаat(size()-1)илиoperator[](size()-1), но с более ясной семантикой.
backпредоставляет интуитивно понятный способ доступа к последнему элементу контейнера.
Определения слов: backозначает "back", т. е. получить последний (самый задний) элемент.
Базовый синтаксис и параметры
backявляется функцией-членом класса контейнера, и её вызов очень прост, не требует параметров.
Формат синтаксиса
reference back(); const_reference back() const;
Описание параметра
- Параметр: Нет параметров
backне принимает никаких параметров.
Описание функции
- Возвращаемое значение: возвращает последний элемент контейнера какссылкуЕсли контейнер является константным, возвращается константная ссылка.
- Действие: возвращает последний элемент контейнера (индекс
size()-1элемент в позиции). - Примечание: массив не может быть пустым, поэтому вызов
backЭто безопасно.
Пример
Давайте тщательно освоим это на серии примеров.backИспользование.
Пример 1: Базовое использование — получение последнего элемента
Пример
#include <array>
int main() {
// 1. Создать массив и инициализировать его
std::array<int, 5> numbers = {10, 20, 30, 40, 50};
std::cout << "Размер массива: " << numbers.size() << std::endl;
// 2. Используйте back() для получения последнего элемента
std::cout << "Последний элемент (back): " << numbers.back() << std::endl;
std::cout << "Использование at(size()-1): " << numbers.at(numbers.size() - 1) << std::endl;
std::cout << "Использование [size()-1]: " << numbers[numbers.size() - 1] << std::endl;
return 0;
}
Ожидаемый вывод:
array的大小是: 5 最后一个元素 (back): 50 使用 at(size()-1): 50 使用 [size()-1]: 50
Анализ кода:
numbers.back()возвращает последний элемент50。- Он и
numbers.at(numbers.size()-1)иnumbers[numbers.size()-1]возвращает то же значение, но с более явной семантикой.
Пример 2: Изменение значения последнего элемента
backОн возвращает ссылку, поэтому его можно использовать для изменения значения элемента.
Пример
#include <array>
#include <string>
int main() {
std::array<std::string, 3> tasks = {"Изучить C++", "Сделать домашнее задание", "Читать документацию"};
std::cout << "Перед изменением последняя задача: " << tasks.back() << std::endl;
// Используйте back(), чтобы получить ссылку и изменить элемент
tasks.back() = "Завершить проект";
std::cout << "После изменения последняя задача: " << tasks.back() << std::endl;
return 0;
}
Ожидаемый вывод:
Before modification, the last task: Read the documentation After modification, the last task: Complete the project
Анализ кода:
tasks.back() = "完成项目";Значение последнего элемента изменяется через ссылку.back()возвращает изменяемую lvalue-ссылку.
Пример 3: Использование back с sort для получения максимальных/минимальных значений
После сортировки,back()Возвращает максимальное значение.
Пример
#include <array>
#include <algorithm>
int main() {
std::array<int, 5> numbers = {30, 10, 50, 20, 40};
std::cout << "Перед сортировкой: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// Сортировка
std::sort(numbers.begin(), numbers.end());
std::cout << "После сортировки: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
std::cout << Минимальное значение (front): << numbers.front() << std::endl;
std::cout << Максимальное значение (back): << numbers.back() << std::endl;
return 0;
}
Ожидаемый вывод:
排序前: 30 10 50 20 40 排序后: 10 20 30 40 50 最小值 (front): 10 最大值 (back): 50
Анализ кода:
- После сортировки,
front()Возвращает минимальное значение,back()Возвращает максимальное значение. - Это простой способ получить максимальное/минимальное значение.
Другие расширения