为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

我要补充一点,数组是C ++中非常底层的结构,在“学习绳索”时,您应该尽量远离它们-甚至Bjarne Stroustrup也建议这样做(他是C ++的设计师)。

向量非常接近与数组相同的性能,但是具有许多便利和安全功能。当与处理原始数组的API接口或构建自己的集合时,您可能会开始使用数组。


查看完整回答
反对 回复 2019-10-15
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

简而言之,向量的长度是动态的,而数组的大小是固定的。使用数组时,可以在声明时指定其大小:


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);

...

有时您将不知道所需的元素数量,因此矢量对于这种情况是理想的。


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 850 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信