小编Mar*_*ark的帖子

通用迭代器

我试图找到一种访问一组容器的通用方法.除了另一个自定义列表外,我还有一个标准的矢量和列表.

自定义列表定义了一个迭代器;

class Iterator: public std::iterator<std::forward_iterator_tag, T> {
    // ...
}

Iterator begin() {
    return (Iterator(root));
}

Iterator end() {
    return (Iterator(NULL));
}
Run Code Online (Sandbox Code Playgroud)

与适当的运算符重载.

理想情况下,我想这样做;

class Foo {
public:
    Foo() {
        std::list<int> x;
        std::vector<int> y;
        custom_list<int> z;

        iter = x.begin(); // OR
        iter = y.begin(); // OR
        iter = z.begin();

        // ...
    };
private:
    std::iterator<int> iter;
};
Run Code Online (Sandbox Code Playgroud)

但显然这些都是不同类型的迭代器.我可以假设所有容器都是相同类型的.

有没有一种优雅的方法来解决这个问题?

c++ generics iteration containers

29
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

containers ×1

generics ×1

iteration ×1