Как узнать длину массива
Перейти к содержимому

Как узнать длину массива

  • автор:

Как определить длину массива в C++

По сути, когда мы говорим о длине массива, мы имеем в виду общее количество элементов, присутствующих в соответствующем массиве. Например, посмотрите на массив ниже:

int array1[] =

Размер (или длина) массива равна общему количеству элементов в нем. Следовательно, в данном случае это «5».

Способы определения длины массива в C++

Теперь давайте посмотрим на различные способы, с помощью которых мы можем выяснить длину массива в C++:

  • поэлементный подсчет,
  • begin() и end(),
  • функция sizeof(),
  • функция size() в STL,
  • указатели.

Теперь давайте обсудим каждый метод подробно и с примерами.

1: Поэлементный подсчет

Самый очевидный способ – перебрать заданный массив и одновременно подсчитать общее количество перебранных элементов.

Но если мы заранее не знаем длину массива для итерации, то в таком случае мы не можем использовать цикл for. Эту проблему можно решить, используя простой цикл for-each. Внимательно посмотрите на приведенный ниже код.

#include #include using namespace std; int main() < int c; int arr[]=; cout cout

Вы получите такой результат:

The array is: 1 2 3 4 5 6 7 8 9 0 The length of the given Array is: 10

Как мы говорили выше, здесь мы перебираем весь массив arr, используя цикл for-each с итератором i. Значение счетчика c увеличивается по мере итерации. Когда перебор закончится, в c вы найдете длину данного массива.

2: Функции begin() и end()

Мы также можем вычислить длину массива, используя стандартные функции begin() и end(). Эти две функции возвращают итераторы, указывающие на начало и конец массива соответственно. Внимательно посмотрите на данный код:

#include #include using namespace std; int main() < //Given Array int arr[] = < 11, 22, 33, 44 >; cout

Следовательно, разница между возвращаемыми значениями двух функций end() и begin() дает нам размер или длину данного массива. Данный код вернет:

The Length of the Array is : 4

3: Функция sizeof()

Оператор sizeof() в C++ возвращает размер переданной переменной или данных в байтах. Кроме того, он возвращает общее количество байтов, необходимых для хранения массива. Следовательно, если мы просто разделим размер массива на размер, занимаемый каждым его элементом, мы узнаем общее количество элементов, присутствующих в массиве.

Давайте посмотрим, как это работает:

#include #include using namespace std; int main() < //Given array int arr[] = ; int al = sizeof(arr)/sizeof(arr[0]); //length calculation cout

В результате мы получим:

The length of the array is: 3

4: Функция size() в STL

В стандартной библиотеке есть функция size(), которая возвращает количество элементов в заданном контейнере (в нашем случае это массив).

#include #include using namespace std; int main() < //Given array arrayarr< 1, 2, 3, 4, 5 >; //Using the size() function from STL cout

В результате вы получите:

The length of the given Array is: 5

5: Определение длины массива с помощью указателей

Узнать длину массива можно с помощью указателей. Давайте посмотрим, как это делается:

#include #include using namespace std; int main() < //Given array int arr[6] = ; int len = *(&arr + 1) - arr; //*(&arr + 1) is the address of the next memory location // just after the last element of the array cout

В результате мы получим:

The length of the array is: 6

Выражение *(arr+1) выдает адрес области памяти сразу после последнего элемента массива. Следовательно, разница между ним и начальным местоположением массива (или базовым адресом, arr) показывает общее количество элементов, присутствующих в данном массиве.

Заключение

Итак, в этом мануале мы обсудили различные методы определения длины массива в C++. Все приведенные выше методы просты в использовании, однако мы предпочитаем применять цикл for-each – не только из-за удобочитаемости кода, но и из-за его кросс-платформенной надежности.

Как узнать длину массива

Массив представляет набор однотипных данных. Формальное определение массива выглядит следующим образом:

тип_переменной название_массива [длина_массива]

После типа переменной идет название массива, а затем в квадратных скобках его размер. Например, определим массив из 4 чисел:

int numbers[4];

Число элементов массива также можно определять через константу:

const int n = 4; int numbers[n]; // содержит 4 элемента

Некоторые компиляторы (например, G++) также поддерживают установку размера с помощью переменных.

Данный массив имеет четыре числа, но все эти числа имеют неопределенное значение. Чтобы установить значения элементов массива, указываются фигурные скобки (инициализатор), внутри которых перечисляются значения для элементов массива:

int numbers[4] <>; //

В данном случае фигурные скобки пусты, поэтому все элементы массива получают нулевые значения.

Также мы можем указать конкретные значения для всех элементов массива:

int numbers[4] ;

В данном случае в памяти выделяется некоторая область из четырех ячеек по 4 байта (размер типа int), где каждая ячейка содержит определенный элемент массива:

Если значений в инициализаторе меньше, чем элементов в массиве, то значения передаются первым элементам, а остальные получают нулевые значения:

int numbers[4] ; //

Если значений в инициализаторе больше, чем элементов в массиве, то при компиляции возникнет ошибка:

int numbers[4] ; // ! Ошибка

Здесь массив имеет размер 4, однако ему передается 6 значений.

Если размер массива не указан явно, то он выводится из количества переданных значений:

int numbers[] ;

В данном случае в массиве есть 6 элементов.

При этом не допускается присвоение одному массиву другого массива:

int nums1[] ; int nums2[] = nums1; // ошибка

Индексы. Получение и изменение элементов массива

После определения массива мы можем обратиться к его отдельным элементам по индексу. Индексы начинаются с нуля, поэтому для обращения к первому элементу необходимо использовать индекс 0. Обратившись к элементу по индексу, мы можем получить его значение, либо изменить его. Например, получим второй элемент (индекс 1):

int n = numbers[1];

Изменение значения второго элемента:

numbers[1] = 123;

Например, получим и изменим значения элементов:

#include int main() < int numbers[4]; int first = numbers[0]; // получаем первый элемент std::cout 

При обращении по индексу следует учитывать, что мы не можем обратиться по несуществующему индексу. Так, если в массиве 4 элемента, то мы можем использовать индексы с 0 до 3 для обращения к его элементам. Использование любого другого индекса приведет к ошибке:

int numbers[4]; int forth = numbers[4]; // !Ошибка - в массиве только 4 элемента

Константные массивы

Если необходимо, чтобы нельзя было изменять значения элементов массива, то такой массив можно определить как константный с помощью ключевого слова const

const int numbers[4]; // numbers[1] = 23; // ошибка - значения элементов массива изменить нельзя

Длина массива

Длина массива не всегда бывает известна. Однако может потребоваться получить ее. Для этого можно использовать несколько способов. Первый способ, который пришел из языка С, представляет применение оператора sizeof :

#include int main() < int numbers[]; std::cout 

По сути длина массива равна совокупной длине его элементов. Все элементы представляют один и тот же тип и занимают один и тот же размер в памяти. Поэтому с помощью выражения sizeof(numbers) находим длину всего массива в байтах, а с помощью выражения sizeof(numbers[0]) - длину одного элемента в байтах. Разделив два значения, можно получить количество элементов в массиве.

Второй способ представляет применение встроенной библиотечной функции std::size() :

#include int main() < int numbers[]; int count = std::size(numbers); std::cout 

Перебор массивов

Используя циклы, можно пробежаться по всему массиву и через индексы обратиться к его элементам:

#include int main() < const int n = 4; int numbers[n] ; for(int i=0; i < n; i++) < std::cout >

Чтобы пройтись по массиву в цикле, надо знать его длину. Здесь длина задана константой n.вначале надо найти длину массива. И в цикле for перебираем все элементы, пока счетчик i не станет равным длине массива. В итоге на консоль будут выведены все элементы массива:

11 12 13 14

Другой пример - вычислим сумму элементов массива:

#include int main() < int numbers[]; int sum <>; for (int i <>; i < std::size(numbers); sum += numbers[i++]); std::cout 

Здесь длина массива вычисляется динамически - с помощью функции std::size() .

Перебор элементов в стиле for-each

Используем другую форму цикла for , которая предназначена специально для перебора последовательностей, в том числе для массивов

#include int main() < int numbers[4] ; for(int n : numbers) < std::cout >

При переборе массива каждый перебираемый элемент будет помещаться в переменную number, значение которой в цикле выводится на консоль.

Если нам неизвестен тип объектов в массиве, то мы можем использовать спецификатор auto для определения типа:

for(auto n : numbers)

Ввод значений массива с консоли

Подобно тому, как вводятся данные для отдельных переменных, можно вводить значения для отдельных элементов массива. Например, пусть пользователь вводит значения числового массива:

#include int main() < const int max ; // максимальная длина массива - не больше 6 чисел int numbers[max]; // массив для ввода чисел int i<>; // счетчик введенных чисел std::cout > numbers[i]; // вводим число i++; > // выводим массив for (i =0; i < max; ++i) < std::cout std::cout

Здесь в цикле сначала вводятся шесть чисел для каждого элемента массива, затем выводим этот массив.

Найти длину массива в C++

В этой статье мы узнаем о различных способах определения длины массива в C++.

По сути, когда мы говорим о длине массива, на самом деле мы имеем в виду общее количество элементов, присутствующих в соответствующем массиве. Например, для массива, как показано ниже:

int array1[] =

Размер массива или длина массива здесь равна общему количеству элементов в нем. В данном случае это «5».

Способы найти длину массива в C++

Теперь давайте посмотрим на различные способы, с помощью которых мы можем найти длину массива в C++, они следующие:

  1. Поэлементный подсчет
  2. begin() и end() , функция
  3. sizeof() , Функция
  4. size() в STL,
  5. Указатели.

Теперь давайте обсудим каждый метод один за другим с примерами и подробно.

1. Поэлементный подсчет

Обход по заданному массиву и одновременный подсчет общего количества пройденных элементов может дать нам длину массива, верно?

Но для обхода мы не можем использовать цикл for напрямую, если заранее не знаем длину массива. Эту проблему можно решить, используя простой цикл for-each. Внимательно посмотрите на приведенный ниже код.

#include #include using namespace std; int main() < int c; int arr[]=; cout cout
The array is: 1 2 3 4 5 6 7 8 9 0 The length of the given Array is: 10 

Здесь, как мы сказали, мы проходим через весь массив arr, используя цикл for-each с итератором i. Одновременно увеличивается счетчик c. Наконец, когда обход завершен, c содержит длину данного массива.

2. Использование begin() и end()

Мы также можем вычислить длину массива, используя функции стандартной библиотеки begin() и end() . Две функции возвращают итераторы, указывающие на начало и конец соответствующего массива соответственно. Внимательно посмотрите на данный код,

#include #include using namespace std; int main() < //Given Array int arr[] = < 11, 22, 33, 44 >; cout 
The Length of the Array is : 4 

Следовательно, здесь, как мы видим, разница между возвращаемыми значениями двух функций end() и begin() дает нам размер или длину данного массива, привязка . То есть в нашем случае 4.

3. Использование функции sizeof() для определения длины массива в C++

Оператор sizeof() в C++ возвращает размер переданной переменной или данных в байтах. Точно так же он возвращает общее количество байтов, необходимых для хранения массива. Следовательно, если мы просто разделим размер массива на размер, получаемый каждым его элементом, мы можем получить общее количество элементов, присутствующих в массиве.

Давайте как это работает

#include #include using namespace std; int main() < //Given array int arr[] = ; int al = sizeof(arr)/sizeof(arr[0]); //length calculation cout
The length of the array is: 3 

Как мы видим, мы получаем желаемый результат.

4. Использование функции size() в STL

У нас есть функция size() , определенная в стандартной библиотеке, которая возвращает количество элементов в данном контейнере (массив в нашем случае).

#include #include using namespace std; int main() < //Given array arrayarr< 1, 2, 3, 4, 5 >; //Using the size() function from STL cout
The length of the given Array is: 5 

По желанию, мы получаем вывод, как показано выше.

5. Использование указателей для определения длины массива в C++

Мы также можем найти длину данного массива с помощью указателей. Давайте посмотрим, как

#include #include using namespace std; int main() < //Given array int arr[6] = ; int len = *(&arr + 1) - arr; //*(&arr + 1) is the address of the next memory location // just after the last element of the array cout
The length of the array is: 6 

Выражение *(arr+1) дает нам адрес области памяти сразу после последнего элемента массива. Следовательно, разница между ним и начальным местоположением массива или базовым адресом (arr) дает нам общее количество элементов, присутствующих в данном массиве.

Заключение

Итак, в этом уроке мы обсудили различные методы определения длины массива в C++. Несмотря на то, что с каждым из приведенных выше примеров легко работать, мы предпочитаем тот, в котором используется цикл for-each. Не только из-за удобочитаемости кода, но и из-за его кросс-платформенной надежности.

Если у вас возникнут дополнительные вопросы, не стесняйтесь использовать комментарии ниже.

Рекомендации

  • Как найти длину массива? – Вопрос о переполнении стека,
  • цикл for-each в C++ — сообщение JournalDev.

Как найти длину массива в Bash 1 мин для чтения

PlayStation размахивает молотком запретов так, как мечтают игроки Xbox

Favorite

Добавить в избранное

Главное меню » Linux » Как найти длину массива в Bash

Как найти длину массива в Bash

Bash поддерживает как числовые, так и ассоциативные массивы. Общее количество элементов этих типов массивов может быть вычислено несколькими способами в Bash. Длину массива можно подсчитать с помощью символа «#» или цикла, или с помощью команды типа «wc» или «grep». В этой статье показаны различные способы подсчета длины массива в Bash.

Найдите длину массива, используя «#»

Использование символа «#» — самый простой способ вычислить длину массива. В этой части статьи показаны способы подсчета общего количества элементов числового и ассоциативного массива.

Пример 1. Подсчет длины числового массива с использованием «#»

Создайте файл Bash со следующим сценарием, который подсчитывает и печатает длину числового массива, используя символ «#». Здесь используются символы «@» и «*» для обозначения всех элементов массива.

#Объявите числовой массив items=("Shirt" "T-Shirt" "Pant" "Panjabi" "Shoe") #Подсчитайте длину массива с помощью '#' echo "Длина массива с использованием '#' с '@': $" echo "Длина массива с использованием '#' с '*': $"

Следующий вывод появляется после выполнения скрипта. Массив содержит пять строковых значений, и для символов «@» и «*» отображается один и тот же результат :

andreyex@andreyex: -$ bash arraylen1.bash Длина массива с использованием '#' с '@': 5 Длина массива с использованием # с 5 andreyex@andreyex: -$

Пример 2. Подсчет длины ассоциативного массива с использованием «#»

Создайте файл Bash со следующим сценарием, который подсчитывает и печатает длину ассоциативного массива, используя символ «#». Здесь используются символы «@» и «*» для обозначения всех элементов массива.

#Объявляем ассоциативный массив declare -A items=([6745]="Shirt (M)" [2345]="Shirt (L)" [4566]="Pant (36)") #Подсчитайте длину массива с помощью '#' echo "Длина ассоциативного массива с использованием '#' с '@': $" echo "Длина ассоциативного массива с использованием '#' с '*': $"

Читать Как настроить SSH-туннелирование в Linux

Следующий вывод появляется после выполнения скрипта. Массив содержит три строковых значения, и для символов «@» и «*» отображается один и тот же результат :

andreyex@andreyex:-$ bash arraylen2.bash Длина ассоциативного массива с использованием '#" с '@': 3 Длина ассоциативного массива с использованием '#* с ***: 3 andreyex@andreyex: -$

Найдите длину массива с помощью цикла

Использование цикла — еще один способ подсчета общего количества элементов в массиве. Длина массива подсчитывается с помощью цикла while в следующем примере:

Пример. Подсчет длины массива с использованием цикла

Создайте файл Bash со следующим сценарием, который подсчитывает общее количество элементов с помощью цикла «пока». Числовой массив из четырех строковых значений объявляется в скрипте с помощью команды «объявить». Цикл for используется для повторения и печати значений массива. Здесь переменная $counter используется для подсчета длины массива, который увеличивается на каждой итерации цикла.

#Объявить массив declare -a items=("Shirt(M)" "Shirt(L)" "Panjabi(42)" "Pant(38)") echo "Значения массива являются:" #Подсчитайте длину массива с помощью цикла counter=0 #Выполните итерацию значений массива for val in $ do #Print the array value echo $val ((counter++)) done echo "Длина массива с использованием цикла $counter."

Следующий вывод появляется после выполнения скрипта. Значения массива и длина массива печатаются в выводе:

andreyex@andreyex:-$ bash arraylen3.bash Значения массива являются: Shirt(M) Shirt(L) Panjabi(42) Pant(38) The Длина массива с использованием цикла 4. andreyex@andreyex: -$

Найдите длину массива с помощью команды «Wc»

Длину массива можно посчитать с помощью некоторых команд. Команда wc — одна из них. Но эта команда не возвращает правильный вывод, если массив содержит строковое значение из нескольких слов. В следующем примере показан метод подсчета общего количества элементов массива и сравнения значения длины массива, подсчитываемого символом «#» и командой wc.

Пример: подсчет длины массива с помощью команды «Wc»

Создайте файл Bash со следующим сценарием, который подсчитывает общее количество элементов с помощью команды «wc». В скрипте объявлен числовой массив из пяти строковых значений. Команда «wc» с параметром -w используется для подсчета длины двух массивов по 5 элементов. Один массив содержит строку из одного слова, а другой массив содержит строку из двух слов. Длина вторых массивов подсчитывается с помощью символа «#» и команды «wc ».

#Объявите числовой массив из одного слова строки items=("Shirt" "T-Shirt" "Pant" "Panjabi" "Shoe") echo "Значения массива: $" #Подсчитайте длину массива с помощью 'wc' len=`echo $ | wc -w` echo "Длина массива с использованием команды 'wc': $len" #Объявите числовой массив из нескольких слов строки items2=("Shirt (XL)" "T-Shirt (L)" "Pant (34)" "Panjabi (38)" "Shoe (9)") echo "Array values: $" echo "Длина массива с использованием '#': $" #Подсчитайте длину массива с помощью 'wc' len=`echo $ | wc -w` echo "Длина массива с использованием команды 'wc': $len"

Читать внутренняя ошибка сервера 500

Следующий вывод появляется после выполнения скрипта. Судя по выводу, команда «wc» выдает неверный вывод для массива, содержащего строковое значение из двух слов:

andreyex@andreyex:-$ bash arraylen4.bash Значения массива: Shirt T-Shirt Pant Panjabi Shoe Длина массива с использованием команды 'wc": 5 Значения массива: Shirt (XL) T-Shirt (L) Pant (34) Panjabi (38) Shoe (9) Длина массива с использованием '#': 5 Длина массива с использованием команды 'wc': 10 andreyex@andreyex: -$

Заключение

В этой статье показаны методы подсчета длины массива с помощью символа «#», цикла и команды «wc ».

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *