开发者社区> 问答> 正文

C ++中的std :: vector与std :: array

C ++中的a std::vector和an 有什么区别std::array?什么时候应该优先于另一个?各自的优缺点是什么?我教科书所做的只是列出它们的相同之处。

展开
收起
保持可爱mmm 2020-01-16 14:24:31 469 0
1 条回答
写回答
取消 提交回答
  • 使用std::vector 类:

    …… 就像使用内置数组一样快,假设您仅在执行内置数组允许的操作(读取和写入现有元素)。

    ...在插入新元素时自动调整大小。

    ...允许您在向量的开始或中间插入新元素,自动将其余元素“向上”移位(这有意义吗?)。它还允许您删除中的任意位置的元素std::vector,从而自动将其余元素向下移动。

    ...允许您使用该at()方法执行范围检查的读取([]如果您不希望执行此检查,则可以始终使用索引器)。

    有2点使用三种主要的注意事项std::vector :

    您没有对基础指针的可靠访问,如果要处理需要数组地址的第三方函数,这可能是一个问题。

    这个std::vector 班很傻。它实现为压缩位域,而不是数组。如果您想要一个bools 数组,请避免使用它!

    在使用期间,std::vector s将比具有相同数量元素的C ++数组大一些。这是因为它们需要跟踪少量其他信息,例如它们的当前大小,并且因为每当std::vector 调整大小时,它们都会保留所需的更多空间。这是为了防止每次插入新元素时都必须调整大小。可以通过提供一个custom来更改此行为allocator,但是我从来没有觉得需要这样做! 问题来源于stack overflow

    2020-01-16 14:24:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载