我想设计一个类Foo
来存储不同类型的各种数据并返回迭代器。它应该是通用的,因此用户Foo
不知道数据是如何存储的(Foo
可能正在使用std::set
或std::vector
其他)。
我很想写一个这样的界面:
class Foo {
class FooImpl;
FooImpl* impl_;
public:
const Iterator<std::string>& GetStrings() const;
const Iterator<int>& GetInts() const;
};
Iterator
像这样的东西在哪里(比如.NET中的迭代器):
template<class T>
class Iterator {
public:
const T& Value() const = 0;
bool Done() const = 0;
void Next() = 0;
};
但我知道这种迭代器在 C++ 中不是标准的,最好像 STL 那样使用迭代器,这样你就可以在它们上使用 STL 算法。
我怎样才能做到这一点?(我需要iterator_traits
任何机会吗?)