Я использую Visual Studio 2012, поэтому C++ 11 в основном ОК ... Ускорение тоже прекрасное, но я бы предпочел избегать других libreries, по крайней мере, ,Как сделать бесконечную последовательность в C++
Я хочу создать только первый итератор, который возвращает бесконечную последовательность, самым элегантным способом. Например, последовательность всех натуральных чисел.
В основном я хочу C++ equivilent этого F # код:
let nums =
seq { while true do
yield 1
yield 2
}
приведенный выше код в основном создает перечислитель, который возвращает [1, 2, 1, 2 ...]
Я знаю, что я могли бы сделать это, написав класс, но там должен быть короткий путь со всеми новыми лямбды и все ...
Я полагаю, что если вы * действительно * не хотите, чтобы написать класс, то вы можете использовать 'повышение :: transform_iterator' применяется к' импульса: : counting_iterator '. Lambdas предоставляет анонимные типы функторов, они не предоставляют анонимных типов итераторов. Поэтому сами по себе они не могут использоваться для определения итератора. –
[Boost Coroutine] (http://www.boost.org/doc/libs/1_55_0/libs/coroutine/doc/html/index.html) позволяет писать код в стиле вашей выборки f #. – ComicSansMS
Просто предупреждение: C++ не доходит до бесконечности. Это по своей природе нетерпеливо и строго оценивается, а это значит, что вам нужно уйти с пути, чтобы он работал хорошо. – Xeo