#include <iostream>
#include <algorithm>
int main()
{
int n, arr_size;
int *array;
scanf("%d", &arr_size);
array = new int[arr_size];
for(int i=0; i<arr_size; i++)
{
scanf("%d ", &array[i]);
}
scanf("%d", &n);
std::cout << std::count(array, array + arr_size, n);
delete[] array;
return 0;
}
배열
어떤 자료형에 대해 요소들을 연속적으로 저장해, 처리하기 쉽게 하는 것
- 배열은 선언할 때 크기가 지정되어야 한다. (배열은 정적인 크기를 갖는다.)
이때 배열의 크기는 양의 정수인 상수로 넣어줘야 하며 변수로 지정해줄 수 없다.
변수로 배열의 크기를 지정할 수 없는 이유는 배열은 스택 메모리에 할당되기 때문이다.
스택(Stack): 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다. 함수의 호출과 함께 할당돼 함수의 호출이 완료되면 소멸한다.
- 후입선출(LIFO, Last-In First-Out) 방식으로 가장 늦게 저장된, 최근에 들어온 데이터가 가장 먼저 꺼내진다.
- 정적 메모리를 할당하며 컴파일 타임에 결정된다.
- 배열의 크기를 명시하지 않고 정의할 수 있다. 배열 요소를 직접 써줌으로써 크기를 알 수 있기 때문이다.
int arr[] = {1,2,3}; // 크기가 3인 배열 선언
int arr[3]; // 배열 요소를 쓰레기값으로
int arr[3] = {0}; // 배열 요소를 모두 0으로
- 배열의 이름은 배열의 시작 주소를 가지고 있다.
- 배열의 크기를 동적으로 만들고 싶을 때 포인터를 이용한 동적할당 또는 벡터 클래스(C++)를 사용한다.
C++에서는 malloc() 함수 말고 new를 이용해 배열을 동적으로 이용할 수 있다.
int *array = new int[array_size];
위에서 먼저 입력받은 array_size만큼 배열을 동적으로 생성한다. new를 이용하면 사용이 끝난 후 delete를 이용해 메모리를 해제해주어야 한다.
- std::count를 이용해 배열에 요소가 포함되는지 확인할 수 있다.
'C, C++ > 공부정리' 카테고리의 다른 글
scanf와 std::cin (1) | 2023.10.24 |
---|---|
[따배씨++] 스택과 힙 (1) | 2023.10.15 |
[백준 그리디 11382] 꼬마 정민 - 자료형 long long (0) | 2023.08.09 |
[백준 그리디 10926] ??! (0) | 2023.08.07 |
[백준 그리디 1008] A/B - 자료형 주의! (0) | 2023.08.07 |