(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);
Я знаю, что мог бы написать это сам с нуля, но я действительно стараюсь не изобретать велосипед.
Какие-нибудь идеи, основанные на бусте?