C++ primer 5th 实现一个类似vector的简易Vec<T>模板

本文介绍了如何根据C++ Primer 5th的课后习题,将StrVec类重写为模板类Vec,并实现了类似C++标准库vector的一些基本操作。
摘要由CSDN通过智能技术生成

C++ primer 5th 课后习题
将以前的StrVec类重写为模板
实现类似vector的一些简易操作

//16.16 将StrVec类重写成模板 命名为Vec
//前置声明
//.h
template <typename T> class Vec;
template <typename T> bool operator==(const Vec<T>&,const Vec<T>&);
template <typename T> bool operator!=(const Vec<T>&,const Vec<T>&);
template <typename T> bool operator< (const Vec<T>&,const Vec<T>&);
template <typename T> bool operator> (const Vec<T>&,const Vec<T>&);
template <typename T> bool operator<=(const Vec<T>&,const Vec<T>&);
template <typename T> bool operator>=(const Vec<T>&,const Vec<T>&);

template <typename T>
class Vec {
   
	friend bool operator==<T>(const Vec<T>&, const Vec<T>&);
	friend bool operator!=<T>(const Vec<T>&, const Vec<T>&);
	friend bool operator< <T>(const Vec<T>&, const Vec<T>&);
	friend bool operator> <T>(const Vec<T>&, const Vec<T>&);
	friend bool operator<=<T>(const Vec<T>&, const Vec<T>&);
	friend bool operator>=<T>(const Vec<T>&, const Vec<T>&);
public:
	typedef size_t size_type;
	typedef T value_type;
	Vec() :elements(nullptr), first_free(nullptr), cap(nullptr) {
    }
	Vec(initializer_list<T> il);
	Vec(const Vec<T>&);
	Vec(Vec<T>&&) noexcept;//移动构造函数
	Vec& operator=(const Vec<T>&);
	Vec& operator=(Vec<T>&&) noexcept;//移动赋值运算符
	~Vec();

	size_t size()const {
    return first_free - elements; }
	size_t capacity() const {
    return cap - elements; }
	void push_back(const T& t) ;
	void push_back(T&& t) noexcept;
	void pop_back();

	T& at(size_t i) {
   
		return *(elements 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值