C++에서 배열 길이 찾기
소개
이 기사에서는 C++에서 배열 길이를 찾을 수 있는 다양한 방법에 대해 알아봅니다.
기본적으로 배열의 길이를 말할 때 실제로는 해당 배열에 있는 요소의 총 수를 참조합니다. 예를 들어, 아래와 같은 배열의 경우:
int array1[] = { 0, 1, 2, 3, 4 }
여기서 배열의 크기 또는 배열의 길이는 배열의 총 요소 수와 같습니다. 이 경우 '5'입니다.
C++에서 배열의 길이를 찾는 방법
이제 C++에서 배열의 길이를 찾을 수 있는 다음과 같은 다양한 방법을 살펴보겠습니다.
- 요소별로 계산,
begin()
및end()
,sizeof()
함수,size()
STL 함수,- 포인터
이제 각 방법을 예제와 함께 자세히 설명하겠습니다.
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
여기에서 우리가 말했듯이 반복자 i와 함께 for-each 루프를 사용하여 전체 배열 arr을 탐색합니다. 동시에 카운터 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()
의 반환 값의 차이는 주어진 배열의 크기 또는 길이를 제공합니다. arr
. 즉, 우리의 경우 4.
3. sizeof() 함수를 사용하여 C++에서 배열 길이 찾기
C++의 sizeof()
연산자는 전달된 변수 또는 데이터의 크기를 바이트 단위로 반환합니다. 마찬가지로 배열을 저장하는 데 필요한 총 바이트 수도 반환합니다. 따라서 단순히 배열의 크기를 각 요소가 얻은 크기로 나누면 배열에 있는 요소의 총 수를 얻을 수 있습니다.
어떻게 작동하는지 살펴보겠습니다.
#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. STL에서 size() 함수 사용하기
주어진 컨테이너(이 경우 배열)의 요소 수를 반환하는 표준 라이브러리에 정의된 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 루프를 사용하는 예제를 선호합니다. 코드 가독성뿐만 아니라 플랫폼 간 안정성 때문입니다.
추가 질문이 있으시면 아래 의견을 자유롭게 사용하십시오.
참조
- 배열의 길이는 어떻게 알 수 있습니까? - 스택 오버플로 질문
- C++의 for-each 루프 - JournalDev 게시물.