一、vector的介绍及使用
(一)什么是vector?
vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
它的底层是由双端队列数据结构实现的。其内部成员实际上是start、finish和endofstorage三个指针构成,起始指针为start,而finish指向最后一个数据,也就是size大小就为finish-start,endofstorage是指向空间的最后一位,也就是capacity大小就为endofstorage-start;
(二)vector常用接口及实现
1.构造函数、拷贝构造和析构函数。
//vector构造函数
vector()
:_start(nullptr)
,_finish(nullptr)
,_endofstoage(nullptr)
{
}
//拷贝构造
//比如要开名为v的5个1的空间则定义为vector<int> v(5,1);
vector(int n, const T& value = T())
:_start(nullptr)
, _finish(nullptr)
, _endofstoage(nullptr)
{
reserve(n);
while (n--)
{
push_back(value);
}
}
template<class InputIterator>
//拷贝构造函数:传入原vector类型的_fist和_finish;
//比如要开一个V2,和V1一样大小的空间,则v2(v1.begin(),v1.end());
vector(InputIterator first, InputIterator last)
:_start(nullptr)
, _finish(nullptr)
, _endofstoage(nullptr)
{
reserve(last - first);
while (first != last)
{
push_back(*first);
first++;
}
}
//v2(v1);
vector(const vector<T>