【发布时间】:2015-11-29 13:08:35
【问题描述】:
我想要这样的界面
#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 似乎做了堆栈部分,但它需要明确的硬编码大小,我不希望这样。)
确实,这是一个过早的优化类型的问题,但我很好奇。
【问题讨论】:
-
有什么理由(除了好奇之外)为什么要明确使用有限堆栈?
-
“这是一个过早的优化类型的问题” - 是的。没有简单的方法可以通过可变长度来实现这一点。之前有人问过。我会尝试将此标记为重复。
-
我是不是误会了,你已经工作了。
-
您可能会考虑为向量实现自己的分配器,以避免免费存储。否则我不明白怎么做。 @Galik它有效,但使用堆。 OP 想要在堆栈上。