现在位置: 首页 > C++ 教程 > 正文

C++ <array> back 函数

C++ 容器类 <array> C++ 容器类 <array>


在 array 的各种操作中,back 是一个非常实用的函数,用于获取最后一个元素

back 是容器类的成员函数,用于返回容器的最后一个元素。它相当于 at(size()-1)operator[](size()-1),但语义更清晰。

back 提供了直观的方式来访问容器的末尾元素。

单词释义back 表示"后面",即获取最后一个(最后面的)元素。


基本语法与参数

back 是容器类的成员函数,调用它非常直接,不需要任何参数。

语法格式

reference back();
const_reference back() const;

参数说明

  • 参数: 无参数
    • back 不接受任何参数。

函数说明

  • 返回值: 返回容器最后一个元素的引用。如果容器是常量容器,则返回常量引用。
  • 效果: 返回容器的最后一个元素(索引 size()-1 处的元素)。
  • 注意: array 不能为空,因此调用 back 是安全的。

实例

让我们通过一系列例子,彻底掌握 back 的用法。

示例 1:基础用法 - 获取最后一个元素

实例

#include <iostream>
#include <array>

int main() {
    // 1. 创建一个 array 并初始化
    std::array<int, 5> numbers = {10, 20, 30, 40, 50};

    std::cout << "array的大小是: " << 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;
}

运行结果预期:

修改前,最后一个任务: 阅读文档
修改后,最后一个任务: 完成项目

代码解析:

  • tasks.back() = "完成项目"; 通过引用修改了最后一个元素的值。
  • back() 返回的是可修改的左值引用。

示例 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> C++ 容器类 <array>