input iterator&& output iterator,十个人九个都说不清楚的故事。

我挑"不能"的 说:

input iterator:*操作返回常引用,常量操作.总之不可附值,不可修改,不可附值.可以被拷贝,可以比较。

 

output iterator:*操作是非常量操作,返回引用,总之*操作是改变状态的.可附值,可修改. 不可比较,不可被拷贝(因为不能实现不修改他就获取数据,和auto_ptr类似)。有意思的是difference_type被强制禁用,因为不可比较(比较一次值都变了)。

 

所以forward_iterator和output _terator不是“isa”的关系。

 

std::iostream和他的子类都是标准委员会逻辑混乱乱用多继承的产物。典型的例子就是std::fstream几乎无人使用;rapidxml,minini都很老实的使用了FILE*操作。

你可能感兴趣的:(input iterator&& output iterator,十个人九个都说不清楚的故事。)