Я пишу контейнер произвольного доступа на C ++. В моем коде я использую это (ну, в моем реальном коде я использую всевозможные определения типов Allocator, это просто легче понять):
template<typename T, typename Allocator = std::allocator<T> >
class Carray {
public:
// ...
typedef T* iterator;
typedef const T* const_iterator;
// ...
};
Но я также могу создать другой класс итераторов, полученный из std::iterator
. Это добавит поддержку typedefs (it::iterator_category
, it::difference_type
и т. Д.).
Теперь мой вопрос, есть ли издержки при использовании класса итератора вместо необработанного указателя? Если да, насколько значительны эти издержки и достаточно ли они серьезны, чтобы не использовать класс итераторов?