【C++】STL--Vector使用及其模拟实现
Vector的使用vector在日常的使用非常广泛我们应该熟悉它的常用接口。接下来我们从基础的接口开始学会它的使用及模拟实现。vector模拟实现的基本结构代码语言javascriptAI代码解释templateclass T class vector { public: typedef T* iterator; typedef const T* const_iterator; //无参构造 vector() :_start(nullptr) //数组首地址 , _finish(nullptr) //当前末尾元素的下一个地址 , _endofstoage(nullptr) //当前分配空间的下一地址 { } //资源管理 ~vector() { if (_start) { delete[] _start; _start _finish _endofstoage nullptr; } } size_t size() const { return _finish - _start; } size_t capacity() const { return _endofstoage - _start; } private: iterator _start; iterator _finish; iterator _endofstoage; };2.1. vector的定义构造函数声明constructor接口说明vector() 重点无参构造vector (const vector x); 重点拷贝构造vector size_type n, const value_type val value_type() 构造并初始化 n 个 valvector (InputIterator first, InputIterator last);使用迭代器进行初始化构造代码语言javascriptAI代码解释//无参构造 vector() :_start(nullptr) , _finish(nullptr) , _endofstoage(nullptr) {} //拷贝构造 void swap(vectorT v) { std::swap(_start, v._start); std::swap(_finish, v._finish); std::swap(_endofstoage, v._endofstoage); } //vector(const vector v) vector(const vectorT v) :_start(nullptr) , _finish(nullptr) , _endofstoage(nullptr) { vector tmp(v.begin(), v.end()); swap(tmp); } //初始化n个val vector(size_t n, const T val T()) :_start(nullptr) , _finish(nullptr) , _endofstoage(nullptr) { reserve(n); for (size_t i 0; i n; i) { push_back(val); } } //使用迭代化区间初始化 template class InputIterator vector(InputIterator first, InputIterator last) :_start(nullptr) , _finish(nullptr) , _endofstoage(nullptr) { while (first ! last) { push_back(*first); first; } }2.2. vector迭代器的使用iterator的使用接口说明beginend 重点获取第一个数据位置的 iterator/const_iterator 获取最后一个数据的下一个位置的 iterator/const_iteratorrbeginrend反向迭代器获取最后一个数据位置的 reverse_iterator 获取第一个数据前一个位置的reverse_iterator代码语言javascriptAI代码解释iterator begin() { return _start; } iterator end() { return _finish; } const iterator begin() const { return _start; } const iterator end() const { return _finish; }2.3. vector的空间增长问题容量空间接口说明size获取数据个数capacity获取容量大小empt判断是否为空resize重点改变 vector 的 sizereserve重点改变 vector 的 capacity