1、vector.cpp
实现了vector类的基本功能函数,迭代器等。
#include <iostream>
#include<algorithm>
#include <numeric>
using namespace std;
//迭代器操作就是指针的操作
namespace miniSTL{
//miniSTL命名空间
template<typename T>
class vector{
public:
typedef T value_type;
typedef T* iterator;
private:
value_type* _data;
size_t _size;
size_t _capacity;
/*
value_type* _first;//指向第一个元素的地址
value_type* _last;//指向最后一个元素的地址 _size = _start - _last
value_type* _finish;//指向最后一个空间后的地址 _capacity = _finish - _first
*/
public:
vector():_data(NULL),_size(0),_capacity(0){
} //默认构造函数
~vector(){
//析构函数--做删除内存用的
delete [] _data;
_data = NULL;
_size = 0;
_capacity = 0;
}
vector (const vector & vec){
//copy作用
_size = vec._size;
_capacity = vec._capacity;
_data = new value_type[_capacity];
for(int i=0;i<_size;++i){
_data[i]= vec._data[i];
}
}
vector& operator=(const vector& vec){
//=重载
if(this==&vec) return *this;
value_type *temp = new value_type[vec._capacity];
for(int i=0;i<vec._size;++i){
temp[i]=vec._data[i];
}
delete [] _data;
_data = temp;
_size=vec._size;
_capacity = vec._capacity;
return *this;
}
void push_back(value_type val){
//尾插法
if(0==_capacity){
//判断vec的capacity是否为0
_capacity = 1;
_data = new value_type[1];
}else if(_size+1 > _capacity){
_capacity *= 2;
value_type* temp = new value_type[_capacity];
for(int i=0;i<_size;i++){
temp[i] = _data[i];
}
delete [] _data;
_data = temp;
}
_data[_size] = val;
++_size;
}
void pop_back(){
--_size;} //删除
size_t size()const{
return _size;} //这个是返回内存的大小
size_t capacity()const{
return _capacity;}
bool empty(){
return _size==0;} //判断是否为空
value_type &operator[](size_t index){