与成员的传染媒介在堆

时间:2015-11-29 13:08:36

标签: c++ c++11 vector c++14

我想要这种界面

#include <vector>
void fun(std::vector<int> v){ }
int main(){
  fun({1, 2, 3, 4}); //<-- this type of invocation
}

而不是

void fun(int argc, int* args){ }
int main(){
   int a[]={1,2,3,4};
   fun(sizeof(a)/sizeof(int), a);
}

我可以让向量进入堆栈(或使用行为类似于堆栈向量的东西)吗?

std::array似乎做了堆栈部分,但它需要一个明确的硬编码大小,我不想要它。)

这是一个过早优化的问题,真的,但我很好奇。

1 个答案:

答案 0 :(得分:0)

'name': 'dosAttack'使用堆来存储其元素,因此如果您需要将元素放在堆栈中,则无法使用它。

您可以使用std::vector或原始数组std::array将元素保留在堆栈中。使用模板可以摆脱界面中的length参数:

T[]