C++ <array> функция size

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


sizeЭто одна из наиболее часто используемых и фундаментальных функций в array, используемая дляполучения количества элементов в контейнере。

sizeявляется функцией-членом классов контейнеров, используемой длявозврата количества элементов, содержащихся в данный момент в контейнере. В отличие от vector, размер array фиксирован и определяется на этапе компиляции.

sizeЭто наиболее часто используемая функция при работе с array, применяемая в таких сценариях, как обход циклов и проверка границ.

Определения слов: sizeозначает "size", указывая на количество элементов в контейнере.


Базовый синтаксис и параметры

sizeЭто функция-член класса контейнера, и для её вызова не требуются аргументы.

Формат синтаксиса

constexpr size_type size() const noexcept;

Описание параметра

  • Параметр: Нет параметров
    • sizeне принимает аргументов.

Описание функции

  • Возвращаемое значение: возвращаетsize_typeТип (обычноsize_t), представляющий количество элементов в контейнере.
  • Действие: Возвращает неотрицательное целое число, представляющее количество элементов, фиксированно хранящихся в контейнере.
  • Примечание: size()Он возвращает константу времени компиляции (constexpr), которую можно использовать во время компиляции.

Пример

Давайте тщательно освоим на серии примеровsizeИспользование.

Пример 1: Базовое использование - получение количества элементов

Пример

#include <iostream>
#include <array>

int main() {
    // массивы разных размеров
    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: " << small.size() << std::endl;
    std::cout << "размер массива medium: " << medium.size() << std::endl;
    std::cout << "размер массива large: " << large.size() << std::endl;

    return 0;
}

Ожидаемый вывод:

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

Анализ кода:

  1. Размер массива определяется во время компиляции и задаётся параметром шаблона.
  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

    массиваsize()Это constexpr, и его можно использовать во время компиляции.

    Пример

    #include <iostream>
    #include <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;
    }

    Анализ кода:

    • массиваsize()Даconstexpr, может быть вычислено во время компиляции.
    • Это отличается от vector, где vectorsize()не является константой времени компиляции.

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

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