0

(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);

我知道我可以自己从头开始编写它,但我真的在努力不重新发明轮子。

任何基于提升的想法?

4

0 回答 0