社区
C++ 语言
帖子详情
求助:如何在c++中实现可变长数组的操作?
fengbingchun
领域专家: C/C++技术领域
2012-09-26 04:05:11
如下:
void main()
{
int a = fun();//通过调用函数fun来取的a的值;
int arr[a];
}
我如何才能实现上面类似的操作呢?在GCC中,以上语句是可以正常编译通过的。
谢谢,望高手指点!
...全文
360
13
打赏
收藏
求助:如何在c++中实现可变长数组的操作?
如下: void main() { int a = fun();//通过调用函数fun来取的a的值; int arr[a]; } 我如何才能实现上面类似的操作呢?在GCC中,以上语句是可以正常编译通过的。 谢谢,望高手指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yisikaipu
2012-09-26
打赏
举报
回复
[Quote=引用楼主 的回复:]int arr[a];[/Quote]
这是C99特性,C++标准不支持
taodm
2012-09-26
打赏
举报
回复
楼主,既然你学C++了,就直接vector吧,别折腾了
图灵狗
2012-09-26
打赏
举报
回复
除了开辟数组之外,struct aa本身也是需要分配空间的,另外bb函数用一级指针就好。
fengbingchun
2012-09-26
打赏
举报
回复
其中一个简单的实现了。
还有一个复杂的:
例如:
struct aa *pAA = NULL;
pAA = new struct aa[a];
假如有一个函数:
bb(struct **);
那么,
for(int i=0; i<a; i++)
bb(&pAA[i]);错误,改如何修改呢?
谢谢!
图灵狗
2012-09-26
打赏
举报
回复
用STL中的vector容器是最好的选择,直接int arr[a]这样的话,就算编译可以通过,其结果也是不可预料的,目前尚无明确的说法和结论。
fengbingchun
2012-09-26
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
引用 6 楼 的回复:
引用 4 楼 的回复:
用vector<int>...
谢谢!如果是复杂的结构体指针呢
结构体指针的长度也可以用new进行动态分配,但是new完之后就不能再改变这个长度的值了。如果在后续有需要改变这个长度的话,建议用STL库的vector。比如你自定义结构体类型为class type{}; 那么可以vector<type>
===……
[/Quote]
谢谢!
zhaoZero41
2012-09-26
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
引用 4 楼 的回复:
用vector<int>...
谢谢!如果是复杂的结构体指针呢
[/Quote]
结构体指针的长度也可以用new进行动态分配,但是new完之后就不能再改变这个长度的值了。如果在后续有需要改变这个长度的话,建议用STL库的vector。比如你自定义结构体类型为class type{}; 那么可以vector<type>
===================================================
我也变成复制粘贴党了
fengbingchun
2012-09-26
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
用vector<int>...
[/Quote]
谢谢!如果是复杂的结构体指针呢
fengbingchun
2012-09-26
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
还开了两个贴,有分!
[/Quote]
哈哈,不是,浏览器出问题了
珍惜生命远离CPP
2012-09-26
打赏
举报
回复
用vector<int>...
fengbingchun
2012-09-26
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
int *arr = new int[a];
[/Quote]
谢谢!
dhdahai
2012-09-26
打赏
举报
回复
还开了两个贴,有分!
zhaoZero41
2012-09-26
打赏
举报
回复
int *arr = new int[a];
C++
可
变长数组
本文介绍如何
实现
一个自定义的可
变长数组
类MyArray,包括构造函数、复制构造函数、重载赋值运算符等关键函数的
实现
。
C++
手把手教你
实现
可变长的数组
本文手把手教你如何在
C++
中
实现
一个可
变长数组
类,包括构造函数、复制构造函数、析构函数、重载赋值运算符、重载方括号运算符、push_back函数和length函数的
实现
,以及优化push_back函数以减少内存分配的开销。
C和
C++
的差异:可
变长数组
、常量、类型转换、字符串等
本文深入探讨了C/
C++
语言的重要特性,包括可
变长数组
、伸缩型数组、常量、结构体、auto类型推导、类型转换、内联函数等,并详细解析了字符串
操作
的具体方法。
C语言
实现
简单可
变长数组
本文深入探讨了可
变长数组
的工作原理,通过
C++
的vector作为例子,解释了当空间不足时如何动态地分配新空间并迁移数据,同时分析了这种
操作
带来的开销,建议在使用时预先确定好空间大小。
c++
数组长度函数length_
C++
手把手教你
实现
可变长的数组
本文介绍了如何在
C++
中
实现
一个自定义的可
变长数组
类MyArray,包括构造函数、复制构造函数、析构函数、赋值运算符重载、[]运算符重载、push_back函数和length()函数的
实现
。讨论了动态内存分配和数组长度的获取,并提出了优化push_back函数的思路。
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章