如图所示,{C ++之前的here std::back_insert_iterator
17继承自std::iterator
,而它在C ++ 17中并不存在。这种变化的原因是什么?
答案 0 :(得分:6)
std::iterator
是一种便利。它提供了一些typedef,使用迭代器的代码很有用。这些天的首选机制是std::iterator_traits
,它更灵活。
当迭代器实际上是一个指针时,它不能从std::iterator
继承,所以iterator_traits
一直是获取这些typedef的方法。在迭代器类型中使用typedef是类,但不是作为指针的迭代器类型,这意味着通用代码不能使用这些成员。拥有它们是非常有用的,它们会消失。