什么是c ++转发器的示例?

时间:2015-10-15 01:47:20

标签: c++ iterator generic-programming

我正在寻找一个迭代器的例子,它满足被认为是ForwardIterator的有限质量,而不是迭代器层次结构中的任何其他东西。

我编写了一个程序,用于打印迭代器符合的五个迭代器类别中的哪一个。我已经测试了其他四个迭代器类别。

1 个答案:

答案 0 :(得分:4)

一个典型的例子是std::forward_list<T>::iterator。测试片段:

#include <iostream>
#include <iterator>
#include <forward_list>
#include <vector>

template<typename T>
bool test = std::is_same <
                typename std::iterator_traits <
                    typename T::iterator
                >::iterator_category,
                std::forward_iterator_tag
            >::value ;

int main()
{
    // test wheter std::forward_list's iterator is a forward_iterator
    std::cout << std::boolalpha << test<std::forward_list<int>> << std::endl;
    // what about std::vector?
    std::cout << std::boolalpha << test<std::vector<int>>;
}

Live on Coliru