(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,但是没有成功。我什至不知道应该如何制定我的Google查询来查找有用的东西。
我认为也许有一个图书馆,可以允许这样的事情:
typedef Iterable<DbVector<int>,
&DbVector<int>::getValue,
&DbVector<int>::size>
IterableDbVectorInt;
const DbVector<int>& dbVector = getDbVector();
return boost::any_of_equal(IterableDbVectorInt(dbVector), someValue);
我知道我可以从头开始编写它,但是我真的在努力不重新发明轮子。
是否有任何基于助推的创意?