Что было бы хорошей реализацией iota_n (отсутствующий алгоритм из STL)C++

Программы на C++. Форум разработчиков
Anonymous
Что было бы хорошей реализацией iota_n (отсутствующий алгоритм из STL)

Сообщение Anonymous »

С C ++ 11, STL теперь имеет функцию std :: iota (см. Ссылку). В отличие от std :: fill_n , std :: generate_n , однако, нет std :: iota_n . Что было бы хорошей реализацией для этого? Прямой цикл (Альтернатива 1) или делегирование в std :: GENERATE_N < /code> с простой выражением Lambda (альтернатива 2)? < /P>

Альтернатива 1) < /strong> < /p>

1) < /strong> < /p>

Код: Выделить всё

template
OutputIterator iota_n(OutputIterator first, Size n, T value)
{
while (n--)
*first++ = value++;
return first;
}
< /code>

 альтернатива 2) < /strong> < /p>

template
OutputIterator iota_n(OutputIterator first, Size n, T value)
{
return std::generate_n(first, n, [&](){ return value++; });
}
< /code>

Обе альтернативы генерируют эквивалентный код с оптимизацией компиляторов? Это также так, как std :: generate_n 
был обновлен в C ++ 11 по сравнению с C ++ 98.

Подробнее здесь: https://stackoverflow.com/questions/117 ... om-the-stl

Вернуться в «C++»