C++ <array> функция size
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 <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
Анализ кода:
- Размер массива определяется во время компиляции и задаётся параметром шаблона.
size()Возвращается это значение, определённое во время компиляции.
Пример 2: Использование size() в цикле
size()Чаще всего используется для управления итерациями цикла.
Пример
#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]。 - массива
size()Даconstexpr, может быть вычислено во время компиляции. - Это отличается от vector, где vector
size()не является константой времени компиляции.
Пример 3: Использование constexpr size
массиваsize()Это constexpr, и его можно использовать во время компиляции.
Пример
#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;
}
Анализ кода:
Другие расширения