2017-11-23 7 views
-4

벡터 또는 포인터를 사용하지 않고 2 차원 배열로 C++로 반환 할 수 있습니까? 당신은 벡터 또는 포인터를 사용하지 않고 C++에서 두 차원 배열을 반환 할 수 벡터없이 C++에서 2 차원 배열 반환

나는이 대답을 찾았지만 pointsers https://stackoverflow.com/a/4172103/4954387

+2

'std :: array

+5

링크 된 답변은 끔찍합니다. C++에서는 배열을 값으로 전달할 수 없습니다. 그 이유 중 하나가 [std :: array'] (http://en.cppreference.com/w/cpp/container/array)가 존재하는 이유 중 하나입니다. 대안은 결과를 함수의 추가 인수로 쓸 수있는 배열을 받아들이는 것입니다. 'std :: vector'를 사용하고 싶지 않은 특별한 이유가 있습니까? –

+2

벡터가없는 이유는 무엇입니까? – Galik

답변

2

를 사용할 때 나는 나 자신을 램 관리 싶지 않아?

크기가 컴파일 타임에 알려져 있고 클래스 유형으로 배열을 래핑하는 경우에만. 마치 1 차원 배열처럼. 배열을 직접 반환 할 수 없습니다. 당신이 Array 같은 클래스를 사용하는 것을 고려하면

struct Array 
{ 
    int array[2][3]; 
}; 

Array f() 
{ 
    return Array { 1, 1, 1, 2, 2, 2 }; 
} 

int main() 
{ 
    auto const array = f(); 
} 

, 표준 라이브러리는 이미 대한 std::array을 제공한다는 두 번 생각과 마음.

컴파일 타임에 크기를 모르는 경우 "벡터를 사용하지 않고"요구 사항을 삭제하고 std::vector을 사용하십시오.