带有'new'数组参数的C++函数调用

问题描述:

我想调用一个需要整数数组的函数。我怎么能这样做,而不是每次我想调用函数时创建一个新的整数数组?带有'new'数组参数的C++函数调用

这就是我想做的事:

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

,而不是这样做:

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

不,你不*想要第一个例子。第二个有什么问题? – Xeo 2012-07-25 19:37:22

+1

呃。什么?第一个示例在您每次调用该函数时创建一个新数组。 – 2012-07-25 19:37:45

+1

您可能会在第一个示例中创建内存泄漏。 – 2012-07-25 19:38:18

假设你可以使用C++ 11,你可以定义somefunction采取的std::vector(或一个std::vector const &)而不是一个实际的阵列,然后使用:

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

与Java不同,你在做而不是需要在C++中定期使用new。事实上,在大多数写得很好的代码中,这是相当不寻常的。另一方面,您通常希望避免使用C++的内置数组,并且C++ 11使它更容易实现,因此很少有充分理由使用它们。

+0

'std :: initializer_list'可能比'std :: vector'更高效。 – fredoverflow 2012-07-25 20:10:02

+0

@FredOverflow:是的,你可以直接接受一个'std :: initializer_list',但假设你想要一个类似于数组的东西,一个'std :: vector'大致相似,并且有一个ctor本身接受一个'std :: initializer_list' ... – 2012-07-25 20:11:37