当前位置:  开发笔记 > 编程语言 > 正文

通用迭代器

如何解决《通用迭代器》经验,为你挑选了1个好方法。

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

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

class Iterator: public std::iterator {
    // ...
}

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

Iterator end() {
    return (Iterator(NULL));
}

与适当的运算符重载.

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

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

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

        // ...
    };
private:
    std::iterator iter;
};

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

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



1> David Sykes..:

以下是您可能会感兴趣的一些文章

为STL迭代器提供基类

为C++迭代器键入Erasure

any_iterator类参考


Thomas Becker(上面第二个链接的作者)有一篇更长篇文章,非常棒:http://www.artima.com/cppsource/type_erasure.html
推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有