首页 科技 军事 财经 教育 体育 房产 健康 汽车 安全 热点 人才 推选

科技

旗下栏目:

C++ vectorSTL vector(可变长的动态数组)详解

发布时间:2019-10-09 来源:原创/投稿/转载 作者:admin 人气:

  在 vector 容器中,根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多数情况下也是常数,总体来说速度很快。

  在中间插入或删除元素时,因为要移动多个元素,因此速度较慢,平均花费的时间和容器中的元素个数成正比。

  在 vector 容器中,用一个动态分配的数组来存放元素,因此根据下标访问某个元素的时间是固定的,与元素个数无关。

  vector 容器在实现时,动态分配的存储空间一般都大于存放元素所需的空间。例如,哪怕容器中只有一个元素,也会分配 32 个元素的存储空间。这样做的好处是,在尾部添加一个新元素时不必重新分配空间,直接将新元素写入适当位置即可。在这种情况下,添加新元素的时间也是常数。

  但是,如果不断添加新元素,多出来的空间就会用完,此时再添加新元素,就不得不重新分配内存空间,把原有内容复制过去后再添加新的元素。碰到这种情况,添加新元素所花的时间就不是常数,而是和数组中的元素个数成正比。

  至于在中间插入或删除元素,必然涉及元素的移动,因此时间不是固定的,而是和元素个数有关。

  在 DevC++中,上面写法中 int 后面的两个之间需要有空格,否则有的编译器会把它们当作运算符,编译会出错。

  上一页STL中“大”、“小”和“相等”的概念C++ list下一页

  文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

责任编辑:admin