Функция back C++ <array>

Класс контейнера 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 <iostream>
#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

Анализ кода:

  1. numbers.back()возвращает последний элемент50。
  2. Он иnumbers.at(numbers.size()-1)иnumbers[numbers.size()-1]возвращает то же значение, но с более явной семантикой.

Пример 2: Изменение значения последнего элемента

backОн возвращает ссылку, поэтому его можно использовать для изменения значения элемента.

Пример

#include <iostream>
#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 <iostream>
#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()Возвращает максимальное значение.
  • Это простой способ получить максимальное/минимальное значение.

Класс контейнера C++ <array>

Другие расширения