数组与向量:入门的相似点和不同点

C ++中的数组和向量之间有什么区别?差异的一个示例可能包括库,符号,能力等。


数组

数组包含特定数量的特定类型的元素。为了使编译器可以在编译程序时保留所需的空间量,必须指定定义数组时数组将包含的元素类型和数量。编译程序时,编译器必须能够确定该值。定义数组后,可以使用数组的标识符以及索引来访问数组的特定元素。数组是零索引的;也就是说,第一个元素在索引0处。此索引方案指示C ++中指针与数组之间的紧密关系以及该语言为指针算术定义的规则。


— C ++ Pocket参考


向量

向量是动态大小的对象序列,提供了数组样式的operator[]随机访问。成员函数push_back通过copy构造函数复制其参数,将该副本添加为向量中的最后一项,并将其大小加1。pop_back通过删除最后一个元素实现完全相反的操作。从向量末尾插入或删除项目需要摊销固定时间,而从任何其他位置插入或删除项目则需要线性时间。这些是向量的基础。他们还有很多。在大多数情况下,向量应是C样式数组的首选。首先,它们是动态调整大小的,这意味着它们可以根据需要增长。您不必为了C数组的情况而进行各种研究来找出最佳的静态大小。向量会根据需要增长,并且可以根据需要手动调整大小。其次,向量使用at成员函数提供边界检查(但不能使用operator[]),这样您就可以在引用不存在的索引时做些事情,而不是仅仅看着程序崩溃或更糟糕的情况,继续使用损坏的数据执行。


— C ++食谱


郎朗坤
浏览 929回答 3
3回答

largeQ

我要补充一点,数组是C ++中非常底层的结构,在“学习绳索”时,您应该尽量远离它们-甚至Bjarne Stroustrup也建议这样做(他是C ++的设计师)。向量非常接近与数组相同的性能,但是具有许多便利和安全功能。当与处理原始数组的API接口或构建自己的集合时,您可能会开始使用数组。

慕婉清6462132

简而言之,向量的长度是动态的,而数组的大小是固定的。使用数组时,可以在声明时指定其大小:int myArray[100];myArray[0]=1;myArray[1]=2;myArray[2]=3;对于矢量,只需声明它并添加元素vector<int> myVector;myVector.push_back(1);myVector.push_back(2);myVector.push_back(3);...有时您将不知道所需的元素数量,因此矢量对于这种情况是理想的。
打开App,查看更多内容
随时随地看视频慕课网APP