不写独立于容器类型的代码
来源:互联网 发布:Logging python 编辑:程序博客网 时间:2024/04/30 09:20
通常我们在写程序时,对于使用序列容器有三种:vector,deque,list。如果我们想在代码中写出的程序能够被这三种容器一起使用那么我们就必须要使用这三个类集合的交集。如:
(一)由于list存在我们就得要放弃operator[],同样我们得放弃那些要求随机访问迭代器的操作,包括sort,stable_sotr,partial_sort和nth_element.
(二) 为了支持vector我们就不能使用push_front,pop_front;对于vector和deque而言,splice和成员函数形式的sort又是被禁用的。结合以上两点,最后的这一限制意味着你的“泛化的序列容器”将没有任何形式的sort可用.
(三) reserve和capacity也都不能用了.
考虑到有时候我们不可避免地要从一种容器类型转到另一种,你可以使用常规的方式来实现这种转变:使用封装技术.最简单的方式 是通过对容器类型和其迭代器类型使用类型定义(typedef).因此,不要这样写:
class Widget { ... };
vector<Widget> vw;
Widget bestWidget;
... // give bestWidget a value
vector<Widget>::iterator i = // find a Widget with the
find(vw.begin(), vw.end(), bestWidget); // same value as bestWidget
应该这样写class Widget { ... };
typedef vector<Widget> WidgetContainer;
typedef WidgetContainer::iterator WCIterator;
WidgetContainer vw;
Widget bestWidget;
...
WCIterator i = find(vw.begin(), vw.end(), bestWidget);
- 不写独立于容器类型的代码
- 不要试图编写独立于容器类型的代码
- 第二条:不要试图编写独立于容器的代码
- 泛型算法 —— 独立于容器的算法
- 泛型算法 —— 独立于容器的算法
- 写代码的最高境界----就是不写代码
- 直接粘贴代码,不在于难,在于写的清楚
- 实现独立于供应商的 JMS 解决方案
- cocos2d-x独立于场景的节点
- 好久不写的VBA代码
- 不写代码的这些时光
- 写代码的不担心找不到工作
- Item 2:抛弃写“容器无关”的代码的幻想
- 不写代码了
- 写可读的代码,代码不可读就是杯具
- 表单不写参数时所传的参数类型
- 不以写代码而写代码
- 写于20160903的自言自语
- 各种基本数据类型的范围和精度如何?
- 系统函数
- 设计模式-单件
- DB2与SqlServer数据移植备忘
- js动态给一个DIV插入一个表格
- 不写独立于容器类型的代码
- 关于获得MFC窗口其它类指针的方法
- 用empty检查是否为空
- 利用 UltraEdit 重新排版 XML 结构数据
- 区间成员函数优先于与之对应的单元素成员函数
- 当心C++编译器的分析机制
- AS常用代码集锦
- 用C#开发较完整的Windows任务管理器
- 慎重选择删除元素的方法