- STL中算法 是 function template。
- 算法看不见容器,对其一无所知,所以它所需要的一切信息都必须从itertor取得,而iterators(由容器提供)必须能够回答算法的所有提问,才能搭配该算法的所有操作。
- 迭代器的分类:
- struct input_iterator_tag {};
- struct output_iterator_tag {};
- struct forward_iterator_tag {} : public input_iterator_tag {};
- struct bidirectional_iterator_tag {} : public forward_iterator_tag {};
- sturct random_access_iterator_tag {} : public bidirectional_iterator_tag {};
- 迭代器分类对算法的影响,示例:求两个迭代器之间的距离的distance算法,如果迭代器是 random_access_iterator,实现用last - first。如果迭代器是input_iterator 实现用while(first != last) ++first; ++cnt;。标准库算法的设计,算法是主函数,通过迭代器的分类调用不同的次函数,以适应不同的容器或做特化的设计提高算法效率。标准库算法源码中有对iterator_category的暗示。
- 仿函数 (class template),重载了(),为算法提供服务。
- 适配器(Adapter)是一种设计模式,用于将一个类的接口转换成另一个类的接口,使得原本不兼容的类能够协同工作。适配器设计模式旨在解决接口之间的不匹配问题。
- 容器适配器内含了容器,迭代器适配器内含了迭代器,仿函数适配器内含了仿函数(仿函数可适配的条件是继承adaptable function)。
- 适配器 修饰所包含的东西 使得接口转换。
posted @
2023-08-24 20:38
stu--wy
阅读(
6)
评论()
编辑
收藏
举报