2012-07-25 3 views
1

정수 배열이 필요한 함수를 호출하려고합니다. 함수를 호출 할 때마다 새로운 정수 배열을 만들지 않고 어떻게이 작업을 수행 할 수 있습니까?C++ 'new'배열 인수를 사용하는 함수 호출

someFunction(new int[]{obj[0].getInt(), obj[1].getInt()}); 

를 대신이 일을 :

는 내가하고 싶은 것입니다, 당신이 취할 somefunction을 정의 할 수 있습니다

int intArray[2] = {obj[0].getInt(), obj[1].getInt()};  
someFunction(intArray); 
+4

아니요, 첫 번째 예를 * 원 *하지 않습니다. 두 번째 문제는 무엇입니까? – Xeo

+1

Erm. 뭐? 첫 번째 예제에서는 함수를 호출 할 때마다 새 배열을 만듭니다. –

+1

첫 번째 예에서는 메모리 누수가 발생할 가능성이 높습니다. –

답변

4

당신이 C++ (11)을 사용할 수 있습니다 가정 std::vector (또는 a std::vector const &) 실제 배열 대신 다음을 사용하십시오.

somefunction({obj[0].getInt(), obj[1].getInt()}); 

Java와 달리 이 아닌은 C++에서 정기적으로 new을 사용해야합니다. 실제로 대부분의 잘 작성된 코드에서는 매우 드문 경우입니다.

일반적으로 C++의 기본 제공 배열은 사용하지 않으려하고 C++ 11에서는이를 사용하는 것이 거의 필요하지 않을 정도로 쉽게 할 수 있습니다.

+0

'std :: initializer_list'는'std :: vector'보다 훨씬 효율적입니다. – fredoverflow

+0

@FredOverflow : 예, 직접'std :: initializer_list'를 받아 들일 수는 있지만, 배열과 같은 것을 원한다고 가정하면'std :: vector'는 대체로 비슷합니다. 그리고 ctor 자체가'std :: initializer_list' ... –