(C++98,gcc4.4.7)假设我有一个连接数据库的容器,它自身不提供迭代器,而只提供索引 getter 和 size(),例如:
template<typename T>
class DbVector
{
public:
const T& getValue(const size_t) const;
size_t size() const;
};
我希望能够在基于范围的算法中使用它。这听起来像是一个普遍的问题。Boost 是否为此提供了解决方案?
我对 Boost.Iterator 和 Boost.Range 进行了一些研究,但没有成功。我什至不确定我的谷歌查询应该如何制定以找到任何有用的东西。
我想也许有一个图书馆,它允许类似的东西:
typedef Iterable<DbVector<int>,
&DbVector<int>::getValue,
&DbVector<int>::size>
IterableDbVectorInt;
const DbVector<int>& dbVector = getDbVector();
return boost::any_of_equal(IterableDbVectorInt(dbVector), someValue);
我知道我可以自己从头开始编写它,但我真的在努力不重新发明轮子。
任何基于提升的想法?