模拟vector的头文件

最近看到有人在问如何模拟实现vector,我这个是模板型的,可以参考一下。里面如果有看不懂的,可以去看我之前的文章https://blog.csdn.net/abcd7038/article/details/104942699.
https://blog.csdn.net/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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值