У меня есть библиотека C, которую я хочу использовать в C ++ (17). Библиотека внутренне отслеживает сложную структуру данных, и, как только кандидат найден, вызывает обратный вызов через
CALLBACK(candidate);
CALLBACK
является макросом и может быть переопределен по желанию, так что пользователь теперь может выполнить вычисление с найденным candidate
.
Вместо непосредственного запуска пользовательского кода в CALLBACK
я хочу добавить в библиотеку слой абстракции для соответствия структурам данных STL, обеспечивающим итераторы. Прямой итератор достаточен для моих целей; таким образом, я могу использовать его, по крайней мере, в некоторых алгоритмах STL, требующих итератор.
Более конкретно, я хочу объект Library
, который позволяет мне писать
for (auto it = Library.begin(); it != Library.end(); ++it) {
const auto& candidate = *it;
...
}
Есть ли идиоматический способ сделать это?
Merci!