怎么在c++中实现可变长数组的操作

求助:如何在c++中实现可变长数组的操作?
如下:
void main()
{
  int a = fun();//通过调用函数fun来取的a的值;

  int arr[a];
}

我如何才能实现上面类似的操作呢?在GCC中,以上语句是可以正常编译通过的。
谢谢,望高手指点!

------解决方案--------------------
int *arr = new int[a];
------解决方案--------------------
new一个数组?

用STL的vector?
------解决方案--------------------
探讨

引用:

new一个数组?

用STL的vector?


谢谢!是呀,用vector可以。
如果是复杂的结构体指针的话,如何设置可变长度呢?

------解决方案--------------------
vector::resize

vector作为容器的好处是其操作与具体成员无关
------解决方案--------------------
用STL中的vector容器是最好的选择,直接int arr[a]这样的话,就算编译可以通过,其结果也是不可预料的,目前尚无明确的说法和结论。
------解决方案--------------------
探讨

引用:

引用:

new一个数组?

用STL的vector?


谢谢!是呀,用vector可以。
如果是复杂的结构体指针的话,如何设置可变长度呢?

vector<复杂结构体> 。。。。

------解决方案--------------------
探讨

用STL中的vector容器是最好的选择,直接int arr[a]这样的话,就算编译可以通过,其结果也是不可预料的,目前尚无明确的说法和结论。

------解决方案--------------------
探讨

引用:

引用:

其中一个简单的实现了。
还有一个复杂的:
例如:
struct aa *pAA = NULL;

pAA = new struct aa[a];

假如有一个函数:
bb(struct **);

那么,
for(int i=0; i<a; i++)
bb(&amp;amp;amp;pAA[i]);错误,……