指针或类作为迭代器?

| 我正在用C ++编写一个随机访问容器。在我的代码中,我使用了此代码(在我的真实代码中,我使用了各种Allocator typedef,这更容易理解):
template<typename T, typename Allocator = std::allocator<T> >
class Carray {
public:
    // ...
    typedef T* iterator;
    typedef const T* const_iterator;
    // ...
};
但是我还可以创建一个从it1派生的不同迭代器类。这将增加对typedef的支持(
it::iterator_category
it::difference_type
等)。 现在我的问题是,使用迭代器类而不是原始指针会产生开销吗?如果是,那么此开销有多大?不使用迭代器类是否足够严重?     
已邀请:
        即使您有原始指针,您也可以使用迭代器类别,差异类型等。您会看到,应该使用此“ 4”模板。它已经专门用于指针。
iterator_traits<int*>::value_type // ... etc. 
//or
iterator traits<my_custom_iterator>::value_type
    
        如果您的迭代器类仅包装了指针,则几乎可以肯定没有开销。 使用原始指针作为迭代器完全符合标准。但是,某些编写不好的代码(如您建议的那样,包括尝试直接使用嵌套的typedef而不是iterator_traits的代码)可能无法编译。一些早期的标准库从vector的迭代器的指针开始,然后进行了更改,纯粹是为了保持这种不良代码的正常运行。这确实是我想打扰的唯一原因。 顺便说一句-如果可能的话,我会使用Boost迭代器支持,而不是直接从std :: iterator派生;这样,许多细微的要求就会为您解决。     

要回复问题请先登录注册