c++容器

157 阅读1分钟

顺序容器

数组是静态空间,定义好大小之后就不能改变;
但是vector是动态空间,随着元素的加入,它的内部机制可动态的增加或减少元素,内存管理自动完成,我们也可以用reserve()来自行管理内存。

vector类有两个成员函数:capacity 和 reserve

size是当前已有元素大小,capacity是当前可容纳元素大小。

reserve:用来告诉容器应该预留多少个元素的空间。

vector迭代器失效的情况:
vector迭代器在内存重新分配的时候将会失效(因为它指向的元素在内存分配的前后不在相同)。
插入元素后,指向当前插入元素的后面的任何元素的迭代器都失效。当插入元素后,元素个数如果超过capacity()时,内存会重新分配,此时所有的迭代器都将失效。
删除元素时,指向被删除元素之后的任何元素的迭代器将会失效。vector是连续存储的,在删除一个元素的时候,后面的元素都要向前移动,所以迭代器的位置就会被前面的覆盖,这个时候++迭代器的时候,就会跳过删除元素的后一个元素。erase会返回删除之后的元素的iterator。

deque 没有容量(capacity)概念,因为它是动态地以分段连续空间组合成的

有序容器