Что было бы хорошей реализацией 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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