C++ 实现std::迭代器
因为C++17不赞成std::iterator,所以我需要实现我自己的。原来它只是一个带有一些typedef的空结构C++ 实现std::迭代器,c++,templates,c++17,C++,Templates,C++17,因为C++17不赞成std::iterator,所以我需要实现我自己的。原来它只是一个带有一些typedef的空结构 template <class Category, class Type, class Diff = ptrdiff_t, class Pointer = Type*, class Reference = Type&> struct iterator { typedef Category iterator_catergory; typedef
template <class Category, class Type, class Diff = ptrdiff_t,
class Pointer = Type*, class Reference = Type&>
struct iterator {
typedef Category iterator_catergory;
typedef Type value_type;
typedef Diff difference_type;
typedef Pointer pointer;
typedef Reference reference;
};
struct dummy_iter : iterator<std::output_iterator_tag, int> {}
你打错了。本声明:
typedef Category iterator_catergory;
应该是这样的:
typedef Category iterator_category;
该标准规定,除非iterator\u traits
包含所有必需的typedef,否则它将成为一个空类。请参见[iterator.traits]/2:
如果迭代器具有有效的([temp.Decrete])成员类型差分类型,
值类型、指针、引用和迭代器类别,
迭代器特性应具有以下特性:
无障碍成员:
using difference_type = typename Iterator::difference_type;
using value_type = typename Iterator::value_type;
using pointer = typename Iterator::pointer;
using reference = typename Iterator::reference;
using iterator_category = typename Iterator::iterator_category;
否则,迭代器不得由任何
上面的名字
你打错了。本声明:
typedef Category iterator_catergory;
应该是这样的:
typedef Category iterator_category;
该标准规定,除非iterator\u traits
包含所有必需的typedef,否则它将成为一个空类。请参见[iterator.traits]/2:
如果迭代器具有有效的([temp.Decrete])成员类型差分类型,
值类型、指针、引用和迭代器类别,
迭代器特性应具有以下特性:
无障碍成员:
using difference_type = typename Iterator::difference_type;
using value_type = typename Iterator::value_type;
using pointer = typename Iterator::pointer;
using reference = typename Iterator::reference;
using iterator_category = typename Iterator::iterator_category;
否则,迭代器不得由任何
上面的名字
干得好。你比我快了不到一分钟。:-)干得好。你比我快了不到一分钟。:-)你不必实现你自己的
std::iterator
仍然在标准中,每个标准库实现都需要提供它。弃用是一种警告,表示将来可能会删除某些内容。这并不意味着它会被移除,也不意味着它会被移除。C头文件自1998年以来就被弃用了,它们仍然活跃、活跃并被广泛使用。您不必实现自己的头文件std::iterator
仍然在标准中,每个标准库实现都需要提供它。弃用是一种警告,表示将来可能会删除某些内容。这并不意味着它会被移除,也不意味着它会被移除。自1998年以来,C头文件一直被弃用,它们仍然活跃、活跃,并被广泛使用。