컴공댕이 공부일지

[ 참조, 상수 ] C++에서 함수에 벡터를 전달하는 방법 (&, const 키워드의 의미) 본문

기록/이론 공부 정리

[ 참조, 상수 ] C++에서 함수에 벡터를 전달하는 방법 (&, const 키워드의 의미)

은솜솜솜 2024. 3. 5. 01:16
728x90

매번 헷갈렸어서 확실히 정리했다.
 
 

1. 벡터를 값으로 전달하기

이렇게 하면 함수 내에서 벡터의 복사본이 생성됩니다. 

#include <iostream>
#include <vector>

void processVector(std::vector<int> vec) {
    // 벡터 처리
    for (int i : vec) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
}

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5};
    processVector(myVector);
    return 0;
}

 
 

2. 벡터를 참조(&)로 전달하기

복사본이 생성되지 않고 주소값을 전달해, 원본 벡터가 함수로 전달됩니다.
이렇게 하면 함수 내에서 벡터의 원본을 수정할 수 있습니다

#include <iostream>
#include <vector>

void processVector(std::vector<int>& vec) {
    // 벡터 처리
    for (int& i : vec) {
        i *= 2; // 각 요소를 두 배로 증가시킴
    }
}

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5};
    processVector(myVector);
    for (int i : myVector) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
    return 0;
}

 
 

3. 벡터를 상수 참조(const &)로 전달하기

상수 참조로 벡터를 전달하면 참조로 전달된 원본 벡터가 수정되지 않음을 보장
이 방법은 함수가 벡터를 읽기만 하고 수정하지 않을 때 유용

#include <iostream>
#include <vector>

void processVector(std::vector<int> vec) {
    // 벡터 처리
    for (int i : vec) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
}

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5};
    processVector(myVector);
    return 0;
}

 
 


 
 
코드의 main 을 줄이고 사용자 정의 함수로 구현을 할 때에 꼭 알아둬야 할 내용들이다.
메인에서 입출력을 받고, 기능 구현을 함수에서 하므로, 벡터를 전달할 일이 많기 때문이다.
알튜비튜 처음엔 이게 다 헷갈려서 막 쓰고 그랬음..ㅎㅎ 이젠 알고 쓰자 !

728x90
Comments