最近看到有人在问如何模拟实现vector,我这个是模板型的,可以参考一下。里面如果有看不懂的,可以去看我之前的文章https://blog.youkuaiyun.com/abcd7038/article/details/104942699.
https://blog.youkuaiyun.com/abcd7038/article/details/105169948.
#ifndef PLUS_H
#define PLUS_H
#include<vector>
#include<memory>
template<typename T>
class plus
{
private:
std::shared_ptr<std::vector<T>> all;
protected:
typedef T __t;
typedef T* __tp;
typedef decltype(all->begin()) __it;
typedef decltype(all->cbegin()) __cit;
typedef long long unsigned __s;
public:
plus(){ }
plus(initializer_list<T> mem12):all(&mem12){ }
plus(const plus& mem2):all(mem2.all){ }
plus(const plus&& mem3):all(&mem3){ std::move(mem3); }
~plus(){ }
void push_back(const T mem)
{
all->push_back(mem);
}
__s size()
{
return all->size();
}
__it begin()
{
return all->begin();
}
__it end()
{
return all->end();
}
__cit cbegin()
{
return all->cbegin();
}
__cit cend()
{
return all->cend();
}
__it insert(__cit mem0,__t mem1)
{
return all->insert(mem0,mem1);
}
__it erase(__it mem4,__it mem5)
{
return all->erase(mem4,mem5);
}
void clear()
{
all->clear();
}
void destory()
{
all->~vector();
}
plus operator=(const plus&mem6)
{
return all->operator=(*this);
}
__t& operator[](const __s mem7)
{
return all->operator[](mem7);
}
__cit operator+(const __s mem8)
{
return this+=mem8;
}
__cit operator-(const __s mem9)
{
return this-=mem9;
}
__cit operator++()
{
return ++this;
}
__cit operator--()
{
return --this;
}
__cit operator+=(const __s mem10)
{
return this+mem10;
}
__cit operator-=(const __s mem11)
{
return this-mem11;
}
__t operator*()
{
return *this;
}
};
#endif