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

C++에서 생성자에 벡터 전달하는 방법

이 글에서는 C++에서 벡터(vector)를 클래스의 생성자에 전달하는 방법을 간단한 예제를 통해 알아보겠습니다. 벡터를 생성자의 매개변수로 넘겨 멤버 변수를 초기화하면, 객체가 생성되는 시점에 데이터를 함께 설정할 수 있습니다.

알고리즘

시작
    Vector라는 이름의 클래스를 선언한다.
        vector<int> 타입의 멤버 변수 vec를 선언한다.
        Vector 클래스의 생성자를 선언한다.
            벡터 객체 v를 매개변수로 생성자에 전달한다.
            vec = v 로 초기화한다.
            벡터의 모든 값을 출력하는 show() 함수를 선언한다.
                for (int i = 0; i < vec.size(); i++)
                    vec[i]의 값을 출력한다.
    main 함수에서 vector 타입의 객체 v를 선언한다.
        배열 초기화 방식으로 v에 값을 저장한다.
    Vector 클래스의 객체 ob를 선언하면서 v를 인자로 전달한다.
    ob.show()를 호출하여 벡터 v의 모든 값을 화면에 출력한다.
종료

예제 코드

#include <iostream>
#include <vector>
using namespace std;
class Vector {
    vector<int> vec;
    public:
        Vector(vector<int> v) {
            vec = v;
}
void show() {
    for (int i = 0; i < vec.size(); i++)
        cout << vec[i] << " ";
    }
};
int main() {
    vector<int> v = {7,6,5,4};
    Vector ob(v);
    ob.show();
    return 0;
}

출력 결과

7 6 5 4

코드 설명

위 코드의 동작 흐름은 다음과 같습니다.

  • 클래스 정의: Vector 클래스 내부에 vector<int> 타입의 멤버 변수 vec를 선언합니다.
  • 생성자: 생성자는 vector<int> 타입의 객체 v를 매개변수로 받아, 이를 멤버 변수 vec에 복사하여 초기화합니다.
  • show() 함수: 반복문을 사용해 벡터에 저장된 모든 요소를 공백으로 구분하여 출력합니다.
  • main 함수: 중괄호 초기화 리스트 {7,6,5,4}로 벡터 v를 만든 뒤, 이를 인자로 전달하여 Vector 객체 ob를 생성하고 show()를 호출합니다.

성능 개선 팁: const 참조 사용하기

위 예제에서는 벡터가 값(value)으로 전달되므로, 생성자 호출 시 원본 벡터 전체가 복사됩니다. 벡터의 크기가 크다면 불필요한 복사 비용이 발생할 수 있습니다. 따라서 실무에서는 다음과 같이 const 참조로 전달하는 것이 권장됩니다.

Vector(const vector<int>& v) : vec(v) {}

이렇게 하면 복사 없이 원본 벡터를 참조하여 멤버 변수를 초기화할 수 있어 성능이 향상되며, const 키워드 덕분에 원본 데이터가 실수로 변경되는 것도 방지할 수 있습니다.