STL 适配器
来源:互联网 发布:程序员交流论坛 编辑:程序博客网 时间:2024/05/22 15:03
适配器的作用: 改变其它STL组件的接口。
STL 提供了三种适配器。 容器适配器, 迭代器适配器, 函数适配器。
栈stack就是一种适配器
stack<T>以类型为T的栈, 默认内部是以deque实现。
stack<T, vector<T> > 以类型为T的栈, 内部以vector实现。
strack<T, list<T> >
strack<T, deque<T> >
队列queue也是一种适配器
queue<T>以类型为T的队列, 默认内部是以deque实现。
queue<T, list<T> > 以类型为T的队列, 内部以list实现。
queue<T, deque<T> >
priority_queue<T> 以类型为T的队列, 默认内部是以vector实现
priority_queue<T, vector<T> >
priority_queue<T, deque<T> >
这些容器适配器, 你想要什么样的实现, 可以轻易实现很容易使用。
迭代器适配器: 反向迭代器就是一种适配器。
反向迭代器对在迭代器上的操作进行了重新的定义,使其完成相反的操作。
函数适配器有三种。
绑定器bind 取反器negator 函数指针适配器, 这些适配器是以类模板的形式定义。
绑定器有2个
bind1st: 把指定值绑定到第一个参数上。
bind2nd: 把指定的值绑定到第二个参数上。
template <class _Tp>
struct greater : public binary_function<_Tp, _Tp, bool> {
bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; }
};
example:
int *where = find_if(&array[0], &array[10], bind1st(greater<int>(), 200));
这句的意思就是把200绑定到第一个参数上,也就是绑定到x上。 所以就变成了 return 200 > y; 这样当y是小于等于200的的数变就会返回真。
所以查找的是第一个小于等于200的数。
int *where = find_if(&array[0], &array[10], bind2nd(greater<int>(), 200));
这个和上面一句相反返回的是第一个大于200的数。
取反器:
not1: 对一元判断函数对像取反。
not2: 对二元判断函数对像取反。
函数指针适配器:
目的是为了一元和二元函数的指针能与STL的其它函数适配器一起工作。
examlpe:
假如程序要使用:
set<string, less<string> >set1;
set<string, greater<string> >set2;
使用函数指针的话:
bool less1(const string& x, const sting& y) { return x < y; }
bool greater(const string& x, const string& y) { return x > y; }
typedef set<string, pointer_to_binary_function<const string&, const string&, bool> > set_type;
set_type set1(ptr_fun(less1));
set_type set2(ptr_fun(greater));
这样可以减少代码。
- STL 适配器
- STL 适配器
- STL 适配器
- stl -- 适配器
- STL适配器
- STL 适配器实现
- STL中的适配器
- (转)STL中的适配器
- STL容器适配器
- STL中的适配器
- STL容器适配器:stack
- STL容器适配器:queue
- STL容器适配器:priority_queue
- C++ STL 容器适配器
- STL 容器适配器
- STL 函数适配器
- C++ STL 容器适配器
- C++ STL 容器适配器
- 创业公司CEO每周应该做的13件事
- 设备控制接口(ioctl 函数)
- max sum
- windows字符编码转换
- 用wubi安装ubuntu 10
- STL 适配器
- jqGrid与Struts2的结合应用(三) —— 使用自定义表单对话框编辑Grid数据
- centOS通过xen虚拟机安装XP系统的方法
- URL编码
- 电影 暂告安全 Safe
- 《乔布斯传》圈点(3)
- Github通过代理获取代码(Windows)
- 转 在eclipse中反编译并查看jar包的class文件,批量反编译
- 轻松实现Word在线编辑