C ++中的数组和向量之间有什么区别?差异的一个例子可能包括库,符号,能力等。
数组
数组包含特定数量的特定类型的元素。为了使编译器可以在编译程序时保留所需的空间量,必须指定定义数组时数组将包含的元素类型和数量。编译程序时,编译器必须能够确定该值。定义数组后,可以将数组的标识符与索引一起使用,以访问数组的特定元素。数组是零索引的;也就是说,第一个元素在索引0处。此索引方案指示C ++中指针与数组之间的紧密关系以及该语言为指针算术定义的规则。
— C ++ Pocket参考
向量
向量是动态大小的对象序列,提供了数组样式的
operator[]
随机访问。成员函数push_back
通过copy构造函数复制其参数,将该副本添加为向量中的最后一项,并将其大小增加1。pop_back
通过删除最后一个元素实现完全相反的操作。从向量末尾插入或删除项目需要摊销固定时间,而从任何其他位置插入或删除项目则需要线性时间。这些是向量的基础。他们还有很多。在大多数情况下,向量应是C样式数组的首选。首先,它们是动态调整大小的,这意味着它们可以根据需要增长。您不必为了C数组的情况而进行各种研究来找出最佳的静态大小。向量会根据需要增长,并且可以根据需要手动调整其大小。其次,向量使用at
成员函数提供边界检查(但不能使用operator[]
),这样您就可以在引用不存在的索引时做些事情,而不是仅仅看着程序崩溃或更糟,而是继续执行损坏的数据。— C ++食谱