STL 에서 컨테이너를 반환 값으로 넘길시에 궁금한점

seoleda의 이미지

예를 들어서 vector<int> func(); 이럴게 선언하고..
finc 함수 내부에..

static vector<int> aaa;
return aaa;

이런식으로 사용을 하면, func 에서 반환값은 래퍼런가 넘어오는 겁니까? 아니면, 컨테이가 모조리 복사되어서 넘어오는 것입니까?
어떻게 생각하면 래퍼런스 일것 같기도 하고, 아닐것 같기도 하거든요.
그럼 이만.. ^^

akbar의 이미지

seoleda wrote:
예를 들어서 vector<int> func(); 이럴게 선언하고..
finc 함수 내부에..

static vector<int> aaa;
return aaa;

이런식으로 사용을 하면, func 에서 반환값은 래퍼런가 넘어오는 겁니까? 아니면, 컨테이가 모조리 복사되어서 넘어오는 것입니까?
어떻게 생각하면 래퍼런스 일것 같기도 하고, 아닐것 같기도 하거든요.
그럼 이만.. ^^

당연히 컨테이너의 각 요소가 모조리 복사되어서 넘어오는 것입니다.
굳이 vector<int> 를 반환해야 한다면

vector<int>& func(vector<int>& rVector)
{
// 어떤 짓...
return rVector;
}

의 형태를 사용하세요