标签:
vector是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像指针一样被操作,由于它的特性我们完全可以将vector看做动态数组。
特点:
1、指定一块如同数组一样的连续存储,但空间可以动态扩展。即它可以像数组一样操作,并且可以动态操作。
2、随机访问方便,它像数组一样被访问。
3、节省空间,因为它是连续存储,在存储的区域是没有被浪费的,当然未存储的区域实际是浪费的。
4、在内部插入删除效率非常低,这样的操作基本是被禁止的。vector被设计成只能在后端进行追加和删除操作,其原因是vector内部实现是按照顺序表的原理。
5、当动态添加的数据操作vector默认分配的大小时要进行内存的重新分配(成倍叠加)、拷贝与释放,这种操作非常耗性能。
vector 的基本操作有:
s[i]直接以下标方式访问容器中的元素。
s.front() 返回首元素。
s.back() 返回尾元素。
s.push_back(x)向表尾插入元素x。
s.size() 返回表长。
s.empty() 当表空时,返回真,否则返回假。
s.pop_back() 删除表尾元素。
s.begin() 返回指向首元素的随机存取迭代器。
s.end() 返回指向尾元素的下一个位置的随机存取迭代器。
s.insert(it, x) 向迭代器it 指向的元素前插入新元素x。
s.insert(it, n, x)向迭代器it 指向的元素前插入n 个x。
s.insert(it, first, last)将由迭代器first 和last 所指定的序列[first, last)插入到迭代器it 指向的元素前面。
s.erase(it)删除由迭代器it 所指向的元素。
s.erase(first, last)删除由迭代器first 和last 所指定的序列[first, last)。
s.clear()删除容器中的所有的元素。
s.swap(v)将s 与另一个vector 对象v 进行交换。
标签:
原文地址:http://www.cnblogs.com/kane0526/p/4316014.html