STL项目练习
- 实现一个通用的容器
- 能够支持插入多种不同的普通类型(包含 int char float double 等)和自定义结构体和自定义类的对象
- 并能根据每种不同类型的比较规则从容器中取得最大或最小的那个值或对象
分 析
通用的容器 - 自己开发 or 重用STL现有容器?
支持插入多种类型 - 非模板莫属
取最大最小值 - 函数对象(仿函数)? or set/multiset
接口设计 - sizeFilter
1. 构造函数
2 .赋值运算符重载
3. 大小
4. 插入和删除
5. 查找最大值和最小值
SizeFilter.hpp
#pragma once
#include <iostream>
#include <set>
using namespace std;
template <class _Ty,
class _Container = set<_Ty>>
class SizeFilter {
public:
typedef SizeFilter<_Ty, _Container> _Myt;
typedef typename _Container::size_type size_type;
typedef typename _Container::value_type value_type;
SizeFilter() : c() {
} //默认构造
SizeFilter(const _Myt& _Right) : c(_Right.c) {
} //通过指定的SizeFilter容器构造
SizeFilter(const _Container& _Cont) : c(_Cont) {
} //通过指定的容器构造
_Myt& operator=