Поиск по сайту:

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


Введение

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

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

int array1[] = { 0, 1, 2, 3, 4 }

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

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

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

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

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

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

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

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

#include<iostream>    
#include<array> 
using namespace std;
int main()
{
   int c;
   int arr[]={1,2,3,4,5,6,7,8,9,0};
   cout<<"The array is: ";
   for(auto i: arr)
   {
   		cout<<i<<" ";
   		c++;
   }
   cout<<"\nThe length of the given Array is: "<<c;
   
   return 0;
}

Выход:

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<iostream>    
#include<array> 
using namespace std;
int main()
{  
   //Given Array
   int arr[] = { 11, 22, 33, 44 };
   
   cout<<"The Length of the Array is : "<<end(arr)-begin(arr); //length
   
   return 0;
}

Выход:

The Length of the Array is : 4

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

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

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

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

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  //Given array
   int  arr[] = {10 ,20 ,30};
   
   int al = sizeof(arr)/sizeof(arr[0]); //length calculation
   cout << "The length of the array is: " <<al;
   
   return 0;
}

Выход:

The length of the array is: 3

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

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

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

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  //Given array
   array<int,5> arr{ 1, 2, 3, 4, 5 };
   //Using the size() function from STL
   cout<<"\nThe length of the given Array is: "<<arr.size();
   return 0;
}

Выход:

The length of the given Array is: 5

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

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

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

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  //Given array
   int  arr[6] = {5,4,3,2,1,0};
   
   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: " << len;
   
   return 0;
}

Выход:

The length of the array is: 6

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

Заключение

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

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

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

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