Я хотел бы знать, существует ли распространенный способ представления высокоуровневых объектов в виде списков в C ++, , кроме использования итераторов STL . (под высокоуровневым я имею в виду некоторые сложные объекты, скажем, ответ базы данных, в отличие от низкоуровневого вектора). Возможно, что-то похожее на C # IEnumerable. Если вы видели какие-либо проекты, использующие это, не могли бы вы дать мне ссылку? Спасибо.
РЕДАКТИРОВАТЬ: Уточнение, почему я заинтересован в этом, а не часть вопроса. Как указано в комментариях, здесь приведен код, объясняющий принципиальное различие, которое я вижу между полиморфизмом во время компиляции и во время выполнения. Представьте, что у вас есть полиморфный тип во время компиляции, что в основном означает, что у вас есть два типа, которые имеют общую концепцию (не interface ). Если вы хотите применить алгоритм к этому полиморфному типу, он будет иметь , чтобы быть универсальным:
template<class iterator>
void myalgorithm(iterator iter) {...}
Но если у вас есть полиморфный тип времени выполнения с интерфейсом, скажем, IMyIterator
, вы можете написать «нормальные» неуниверсальные алгоритмы для него
void myalgorithm(IMyIterator* iter) {...}
Огромная разница в реализации этих двух функций заключается в различном уровне поддержки языка и IDE для работы с интерфейсами по сравнению с универсальными типами. Другое дело, что не все знакомы с программированием шаблонов, как, вероятно, вы. Наконец, второй случай позволяет скрыть реализацию, а первый - только заголовок. Поэтому, пожалуйста, не говорите мне, что между ними нет разницы, если только вы не покажете мне, где я неправ.