C++中的std :: back_insert_iterator 17

Han*_*lil 3 c++ iterator stl c++17

如前所述, std::back_insert_iterator在C++之前,17继承自std::iteratorC++ 17.这种变化的原因是什么?

Pet*_*ker 6

std::iterator很方便.它提供了一些typedef,使用迭代器的代码很有用.这些天的首选机制是std::iterator_traits,它更灵活.

实际上,迭代器是一个无法继承的指针std::iterator,因此iterator_traits一直是获取这些typedef的方法.在迭代器类型中使用typedef是类,但不是作为指针的迭代器类型,这意味着通用代码不能使用这些成员.拥有它们是非常有用的,它们会消失.

  • 为了明确Pete所说的,`std :: iterator`没有任何数据成员或任何成员函数.它只提供了一些嵌套的typedef.只要typedef中的信息可用(并且`std :: iterator_traits`是获取它的机制),那么迭代器是否实际继承以获取typedef或自己声明它们没有区别. (3认同)