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

C++ <array> size 函数

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


size 是 array 中最常用、最基础的函数之一,用于获取容器中元素的数量

size 是容器类的成员函数,用于返回容器当前包含的元素个数。与 vector 不同,array 的大小是固定的,在编译时确定。

size 是操作 array 时最频繁使用的函数,用于循环遍历、边界检查等场景。

单词释义size 就是"大小",表示容器中元素的数量。


基本语法与参数

size 是容器类的成员函数,调用它不需要参数。

语法格式

constexpr size_type size() const noexcept;

参数说明

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

函数说明

  • 返回值: 返回 size_type 类型(通常是 size_t),表示容器中元素的数量。
  • 效果: 返回一个非负整数,表示容器中固定存储的元素个数。
  • 注意size() 返回的是一个编译时常量(constexpr),可以在编译时使用。

实例

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

示例 1:基础用法 - 获取元素数量

实例

#include <iostream>
#include <array>

int main() {
    // 不同大小的 array
    std::array<int, 3> small = {1, 2, 3};
    std::array<int, 5> medium = {1, 2, 3, 4, 5};
    std::array<int, 10> large = {};

    std::cout << "small array 大小: " << small.size() << std::endl;
    std::cout << "medium array 大小: " << medium.size() << std::endl;
    std::cout << "large array 大小: " << large.size() << std::endl;

    return 0;
}

运行结果预期:

small array 大小: 3
medium array 大小: 5
large array 大小: 10

代码解析:

  1. array 的大小在编译时确定,由模板参数指定。
  2. size() 返回的就是这个编译时确定的值。

示例 2:在循环中使用 size()

size() 最常用于控制循环遍历。

实例

#include <iostream>
#include <array>

int main() {
    std::array<int, 5> numbers = {10, 20, 30, 40, 50};

    // 使用 size() 控制循环
    std::cout << "遍历所有元素: ";
    for(size_t i = 0; i < numbers.size(); ++i) {
        std::cout << numbers[i] << " ";
    }
    std::cout << std::endl;

    // 使用 size() 获取反向遍历的边界
    std::cout << "反向遍历: ";
    for(size_t i = numbers.size(); i > 0; --i) {
        std::cout << numbers[i - 1] << " ";
    }
    std::cout << std::endl;

    return 0;
}

运行结果预期:

遍历所有元素: 10 20 30 40 50
反向遍历: 50 40 30 20 10

代码解析:

  • numbers.size() 返回 5,循环条件 i < numbers.size() 确保不会越界。
  • 反向遍历时,从 size() 开始递减到 1,然后访问 [i-1]
  • 示例 3:使用 constexpr size

    array 的 size() 是 constexpr,可以在编译时使用。

    实例

    #include <iostream>
    #include <array>

    // 模板函数:创建一个给定大小的 array
    template<size_t N>
    void printSize(const std::array<int, N>& arr) {
        // size() 可以用在需要编译时常量的地方
        constexpr size_t s = arr.size();
        std::cout << "Array size: " << s << std::endl;
    }

    int main() {
        std::array<int, 5> arr = {1, 2, 3, 4, 5};
        printSize(arr);

        return 0;
    }

    代码解析:

    • array 的 size()constexpr,可以在编译时求值。
    • 这与 vector 不同,vector 的 size() 不是编译时常量。

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