C++11里面,二维数组更推荐使用vector>来替换[][]?

十八道胡同 2019-01-16 09:49:38
C++11写的C++项目,内部做代码review时,有人提出在C++11里面,C++更推荐使用vector<vector<>>来替换使用普通的二维数组Distance[i][j]??

我搜索了下 网上没看到有类似的说法,不知各位大神,可知道这个情况。
当然了,我暂时还有去做实验验证这个说法。
...全文
871 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlbertS 2019-01-21
  • 打赏
  • 举报
回复
没有这种说法吧,感觉1楼说很清楚了
srhouyu 2019-01-20
  • 打赏
  • 举报
回复
引用 4 楼 LCL_data 的回复:
[quote=引用 1 楼 srhouyu 的回复:] C++并没有推荐你用什么。双层vector与二维数组的机制还是有比较大的区别的。双层vector的数据不是连续内存,所以支持锯齿形数组,速度也慢些。但是二维数组是连续内存,所以必须是矩形数组,但是速度也快些。你需要在不同情况下使用合适的。
我的二维数组 主要是用来做floyd算法的搜索的
引用 2 楼 Slzde_sub 的回复:
vector<vector>的效率不高 考虑用vector<void*> 或者 别的代替
现在主要是考虑效率,内存方面考虑的不多, 谢谢各位回复。[/quote] 优先考虑效率,而且没有锯齿形和动态增删的需求,那当然得用原始的二维数组
独孤过 2019-01-16
  • 打赏
  • 举报
回复
vector之所以优先于动态分配数组,是因为它帮助管理内存。在效率存在瓶颈时,使用数组速度更快,有时候就是需要以空间换时间。 当决定用new来动态分配内存时,这意味着承担以下责任: 确保以后会用delete来释放所分配内存。如果没有随后的delete,那么将会导致资源泄露。 确保使用正确的delete形式。分配和释放单个对象使用new和delete,分配和释放数组对象使用new[]和delete[],如果使用不正确的形式,那结果是不确定。在有些平台上,程序会在运行时崩溃,在其他平台上,妨碍进一步运行,有时会泄露资源和破坏内存。 确保只释放一次。如果一次分配被多次delete,结果同样不确定。 而智能指针和容器在生命周期结束时会自动析构和释放所管理对象与内存,在一定程度上以上责任无需担心。
赵4老师 2019-01-16
  • 打赏
  • 举报
回复
提高二维数据处理效率,优先考虑使用GPU。
十八道胡同 2019-01-16
  • 打赏
  • 举报
回复
引用 1 楼 srhouyu 的回复:
C++并没有推荐你用什么。双层vector与二维数组的机制还是有比较大的区别的。双层vector的数据不是连续内存,所以支持锯齿形数组,速度也慢些。但是二维数组是连续内存,所以必须是矩形数组,但是速度也快些。你需要在不同情况下使用合适的。


我的二维数组 主要是用来做floyd算法的搜索的

引用 2 楼 Slzde_sub 的回复:
vector<vector>的效率不高

考虑用vector<void*> 或者 别的代替


现在主要是考虑效率,内存方面考虑的不多,
谢谢各位回复。
srhouyu 2019-01-16
  • 打赏
  • 举报
回复
C++并没有推荐你用什么。双层vector与二维数组的机制还是有比较大的区别的。双层vector的数据不是连续内存,所以支持锯齿形数组,速度也慢些。但是二维数组是连续内存,所以必须是矩形数组,但是速度也快些。你需要在不同情况下使用合适的。

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧