Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 벡터에서 특정 값 또는 조건과 일치하는 요소 개수 구하는 방법

벡터(vector)가 주어졌을 때, 그 안에서 특정 목표 값(target)이나 주어진 조건과 일치하는 요소의 개수를 계산하는 것이 이 글의 과제입니다.

벡터란 무엇인가?

벡터는 크기를 자유롭게 변경할 수 있는 시퀀스 컨테이너(sequence container)입니다. 컨테이너란 동일한 타입의 데이터를 담는 객체를 의미하며, 시퀀스 컨테이너는 요소들을 엄격하게 선형 순서로 저장합니다.

벡터는 요소들을 연속된 메모리 공간에 저장하기 때문에 첨자 연산자([])를 사용해 어떤 요소든 직접 접근할 수 있습니다. 배열과 달리 벡터는 실행 중에 필요에 따라 크기를 줄이거나 늘릴 수 있으며, 메모리 저장 공간은 자동으로 관리됩니다.

런타임에 크기를 확장·축소하는 기능을 지원하기 위해 벡터 컨테이너는 미래의 증가 가능성을 대비해 여분의 저장 공간을 추가로 할당할 수 있습니다. 따라서 실제 용량(capacity)은 현재 크기(size)보다 클 수 있습니다. 이러한 이유로 배열에 비해 벡터는 더 많은 메모리를 소모하지만, 그 대신 저장 공간을 효율적으로 관리하고 동적으로 확장할 수 있는 장점을 얻게 됩니다.

예시

입력 − vector vec = {1, 2, 3, 4, 4, 4, 4}
    목표 값 = 4
출력 − count is: 4

설명 − 주어진 벡터에서 목표 값 4가 4번 등장하므로 개수는 4입니다.

입력 − vector vec = {1, 2, 3}
    목표 값 = 4
출력 − count is: 0

설명 − 주어진 벡터에서 목표 값 4가 한 번도 등장하지 않으므로 개수는 0입니다.

프로그램의 접근 방식

  • 벡터를 입력받아 vec 같은 vector 타입 변수에 저장합니다.

  • 목표 값을 정수형으로 설정합니다.

  • 개수를 저장할 임시 변수를 하나 선언합니다.

  • C++ STL에서 제공하는 내장 함수 count()를 호출하고, 인자로 vec.begin(), vec.end(), 목표 값을 전달합니다.

  • 결과를 출력합니다.

예제 코드

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main(){
    vector<int> myvector{ 1, 2, 3, 4, 4, 4, 4, 4 };
    int target = 4;
    int res = count(myvector.begin(), myvector.end(), target);
    cout << "Target is: " << target << "\nCount is: " << res << endl;
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다 −

Target is: 4
Count is: 5

이처럼 C++의 count() 함수를 활용하면 반복문 없이 단 한 줄의 코드로 벡터 내 특정 값의 등장 횟수를 손쉽게 구할 수 있습니다. 조건 기반 검색이 필요하다면 count_if() 함수를 사용하면 됩니다.