C ++中的a std::vector和an 有什么区别std::array?什么时候应该优先于另一个?各自的优缺点是什么?我教科书所做的只是列出它们的相同之处。
使用std::vector 类:
…… 就像使用内置数组一样快,假设您仅在执行内置数组允许的操作(读取和写入现有元素)。
...在插入新元素时自动调整大小。
...允许您在向量的开始或中间插入新元素,自动将其余元素“向上”移位(这有意义吗?)。它还允许您删除中的任意位置的元素std::vector,从而自动将其余元素向下移动。
...允许您使用该at()方法执行范围检查的读取([]如果您不希望执行此检查,则可以始终使用索引器)。
有2点使用三种主要的注意事项std::vector :
您没有对基础指针的可靠访问,如果要处理需要数组地址的第三方函数,这可能是一个问题。
这个std::vector 班很傻。它实现为压缩位域,而不是数组。如果您想要一个bools 数组,请避免使用它!
在使用期间,std::vector s将比具有相同数量元素的C ++数组大一些。这是因为它们需要跟踪少量其他信息,例如它们的当前大小,并且因为每当std::vector 调整大小时,它们都会保留所需的更多空间。这是为了防止每次插入新元素时都必须调整大小。可以通过提供一个custom来更改此行为allocator,但是我从来没有觉得需要这样做! 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。