본문 바로가기
공부/코딩 개념정리

[C++] 함수에 vector 전달하기

by 소소하지만유니크한 2020. 4. 8.
728x90

아래와 같이 vector 매개변수로 두어 함수를 호출한 경우 함수 안에서 값을 바꾸더라도 해당 함수가 반환된 이후인 main 함수에서는 영향이 없습니다.

#include<bits/stdc++.h> 
using namespace std; 
   
void func(vector<int> vect) 
{ 
   vect.push_back(30); 
} 
   
int main() 
{ 
    vector<int> vect; 
    vect.push_back(10); 
    vect.push_back(20); 
   
    func(vect); 
   
    for (int i=0; i<vect.size(); i++) 
       cout << vect[i] << " "; 
   
    return 0; 
} 

output:

10 20

 

 

때문에, 호출한 함수안에서 vector 값을 변경하고 싶은 경우에는 vector를 값에 의한 호출(call by value)이 아닌, 아래와 같이 참조에 의한 호출(call by reference)을 이용하여야합니다.

#include<bits/stdc++.h> 
using namespace std; 

void func(vector<int> &vect) 
{ 
   vect.push_back(30); 
} 
   
int main() 
{ 
    vector<int> vect; 
    vect.push_back(10); 
    vect.push_back(20); 
   
    func(vect); 
  
    for (int i=0; i<vect.size(); i++) 
       cout << vect[i] << " "; 
   
    return 0; 
} 

output:

10 20 30

 

 

728x90

댓글