我想找到访问一组容器的通用方法。除了另一个自定义列表之外,我还有一个标准向量和列表。通用迭代器
自定义列表定义了一个迭代器;
class Iterator: public std::iterator<std::forward_iterator_tag, T> {
// ...
}
Iterator begin() {
return (Iterator(root));
}
Iterator end() {
return (Iterator(NULL));
}
与适当的操作符重载。
理想情况下,我想这样做;
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;
};
但显然这些都是不同类型的迭代器。我可以假设所有的容器都是相同的类型。
有没有一种优雅的方式来解决这个问题?
托马斯贝克(上面的第二个链接的作者)有一个更长的文章,这是非常好的:http://www.artima.com/cppsource/type_erasure.html – Adrian 2009-01-09 17:04:16
@阿德里安 - 文章是辉煌的:D感谢分享它! – nevelis 2014-08-08 02:20:20