在 vector 容器中,根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多数情况下也是常数,总体来说速度很快。 在中间插入或删除元素时,因为要移动多个元素,因此速度较慢,平均花费的时间和容器中的元素个数成正比。 在 vector 容器中,用一个动态分配的数组来存放元素,因此根据下标访问某个元素的时间是固定的,与元素个数无关。 vector 容器在实现时,动态分配的存储空间一般都大于存放元素所需的空间。例如,哪怕容器中只有一个元素,也会分配 32 个元素的存储空间。这样做的好处是,在尾部添加一个新元素时不必重新分配空间,直接将新元素写入适当位置即可。在这种情况下,添加新元素的时间也是常数。 但是,如果不断添加新元素,多出来的空间就会用完,此时再添加新元素,就不得不重新分配内存空间,把原有内容复制过去后再添加新的元素。碰到这种情况,添加新元素所花的时间就不是常数,而是和数组中的元素个数成正比。 至于在中间插入或删除元素,必然涉及元素的移动,因此时间不是固定的,而是和元素个数有关。 在 DevC++中,上面写法中 int 后面的两个之间需要有空格,否则有的编译器会把它们当作运算符,编译会出错。 上一页STL中“大”、“小”和“相等”的概念C++ list下一页 文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。 |