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

C++ 벡터(Vector) 구현 프로그램 – 메뉴 기반 동적 배열 예제

벡터(Vector)란 무엇인가?

벡터는 요소가 삽입되거나 삭제될 때 스스로 크기를 조절할 수 있는 동적 배열(dynamic array)입니다. 벡터의 요소들은 연속된 메모리 공간에 저장되며, 저장 공간의 할당과 해제는 컨테이너가 자동으로 처리하기 때문에 개발자가 직접 메모리를 관리할 필요가 없습니다.

이번 글에서는 사용자가 메뉴를 선택하여 벡터의 다양한 연산을 수행할 수 있는 C++ 프로그램을 살펴보겠습니다.

예제 코드

다음은 벡터를 구현한 전체 C++ 프로그램입니다.

#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>

using namespace std;
int main() {
    int ch, val;
    vector<int> vec;
    cout<<"1) 벡터에 요소 삽입"<<endl;
    cout<<"2) 벡터의 마지막 요소 삭제"<<endl;
    cout<<"3) 벡터 크기 출력"<<endl;
    cout<<"4) 벡터 요소 출력"<<endl;
    cout<<"5) 벡터 비우기"<<endl;
    cout<<"6) 종료"<<endl;

    do {
       cout<<"메뉴를 선택하세요: "<<endl;
       cin>>ch;
       switch(ch) {
          case 1:
          cout<<"삽입할 값을 입력하세요: "<<endl;
          cin>>val;
          vec.push_back(val);
          break;
          case 2:
          cout<<"마지막 요소가 삭제되었습니다."<<endl;
          vec.pop_back();
          break;
          case 3:
          cout<<"벡터 크기: ";
          cout<<vec.size()<<endl;
          break;
          case 4:
          cout<<"벡터 요소 출력: ";
          for (int i = 0; i < vec.size(); i++)
          cout<<vec[i]<<" ";
          cout<<endl;
          break;
          case 5:
          vec.clear();
          cout<<"벡터가 비워졌습니다."<<endl;
          break;
          case 6:
          cout<<"종료합니다."<<endl;
          break;
          default:
          cout<<"오류... 잘못된 선택입니다."<<endl;
       }
    } while (ch!=6);
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

1) 벡터에 요소 삽입
2) 벡터의 마지막 요소 삭제
3) 벡터 크기 출력
4) 벡터 요소 출력
5) 벡터 비우기
6) 종료

메뉴를 선택하세요: 1
삽입할 값을 입력하세요: 5
메뉴를 선택하세요: 1
삽입할 값을 입력하세요: 2
메뉴를 선택하세요: 1
삽입할 값을 입력하세요: 8
메뉴를 선택하세요: 1
삽입할 값을 입력하세요: 6
메뉴를 선택하세요: 3
벡터 크기: 4
메뉴를 선택하세요: 4
벡터 요소 출력: 5 2 8 6
메뉴를 선택하세요: 2
마지막 요소가 삭제되었습니다.
메뉴를 선택하세요: 3
벡터 크기: 3
메뉴를 선택하세요: 4
벡터 요소 출력: 5 2 8
메뉴를 선택하세요: 5
벡터가 비워졌습니다.
메뉴를 선택하세요: 3
벡터 크기: 0
메뉴를 선택하세요: 4
벡터 요소 출력: 
메뉴를 선택하세요: 9
오류... 잘못된 선택입니다.
메뉴를 선택하세요: 6
종료합니다.

코드 설명

위 프로그램에서는 먼저 정수형 벡터를 선언한 뒤, 사용자가 원하는 벡터 연산을 선택할 수 있는 메뉴 화면을 출력합니다.

vector<int> vec;
cout<<"1) 벡터에 요소 삽입"<<endl;
cout<<"2) 벡터의 마지막 요소 삭제"<<endl;
cout<<"3) 벡터 크기 출력"<<endl;
cout<<"4) 벡터 요소 출력"<<endl;
cout<<"5) 벡터 비우기"<<endl;
cout<<"6) 종료"<<endl;

그다음 do-while 루프를 사용하여 사용자의 선택을 반복적으로 입력받고, switch 문을 통해 선택된 번호에 따라 해당 연산을 수행합니다. 지원되는 연산은 벡터에 요소 삽입, 마지막 요소 삭제, 벡터 크기 출력, 벡터 요소 출력, 벡터 비우기, 그리고 프로그램 종료입니다. 사용자가 6을 입력하면 루프 조건(ch != 6)이 거짓이 되어 프로그램이 정상적으로 종료되며, 목록에 없는 번호를 입력하면 오류 메시지를 출력합니다.

do {
    cout<<"메뉴를 선택하세요: "<<endl;
    cin>>ch;
    switch(ch) {
       case 1:
       cout<<"삽입할 값을 입력하세요: "<<endl;
       cin>>val;
       vec.push_back(val);
       break;
       case 2:
       cout<<"마지막 요소가 삭제되었습니다."<<endl;
       vec.pop_back();
       break;
       case 3:
       cout<<"벡터 크기: ";
       cout<<vec.size()<<endl;
       break;
       case 4:
       cout<<"벡터 요소 출력: ";
       for (int i = 0; i < vec.size(); i++)
       cout<<vec[i]<<" ";
       cout<<endl;
       break;
       case 5:
       vec.clear();
       cout<<"벡터가 비워졌습니다."<<endl;
       break;
       case 6:
       cout<<"종료합니다."<<endl;
       break;
       default:
       cout<<"오류... 잘못된 선택입니다."<<endl;
    }
} while (ch!=6);

주요 벡터 멤버 함수 정리

  • push_back(val) : 벡터의 맨 뒤에 새로운 요소를 추가합니다. 필요 시 내부 저장 공간이 자동으로 확장됩니다.
  • pop_back() : 벡터의 마지막 요소를 제거합니다.
  • size() : 현재 벡터에 저장된 요소의 개수를 반환합니다.
  • clear() : 벡터의 모든 요소를 제거하여 크기를 0으로 만듭니다.
  • vec[i] : 인덱스 연산자를 통해 특정 위치의 요소에 접근합니다.

이처럼 벡터는 일반 배열과 달리 크기를 신경 쓰지 않아도 되므로, 요소의 개수가 실행 중에 달라지는 상황에서 매우 유용하게 활용할 수 있습니다.