Поделиться через


fill_n

Присваивает новое значение указанному количеству элементов в диапазоне, который начинается с определенного элемента.

template<class OutputIterator, class Size, class Type> 
   OutputIterator fill_n( 
      OutputIterator First,  
      Size Count,  
      const Type& Val 
   ); 

Параметры

  • First
    Выходной итератор, обращающийся к положению первого элемента в диапазоне, которому должно быть присвоено значение Val.

  • Count
    Знаковый или беззнаковый целочисленный тип, указывающий количество элементов, которым требуется присвоить значение.

  • Val
    Данное значение будет присвоено элементам в диапазоне [First, Первый + количество).

Возвращаемое значение

Итератор на элемент, который следует за последним заполненным элементом заполнил, если Count > нуля; в противном случае первый элемент.

Заметки

Диапазон назначения должен быть допустимым; все указатели должны поддерживать возможность удаления ссылки, а последняя позиция должна быть достижимой из первой путем инкрементного увеличения. Сложность является линейной с размером диапазона.

fill_n имеет две связанные формы:

Дополнительные сведения о том, как ведут себя эти функции, см. в разделе Проверяемые итераторы.

Пример

// alg_fill_n.cpp
// compile using /EHsc
#include <vector>
#include <algorithm>
#include <iostream>

int main() 
{
    using namespace std;
    vector <int> v;

    for ( auto i = 0 ; i < 9 ; ++i )
        v.push_back( 0 );

    cout << "  vector v = ( " ;
    for ( const auto &w : v )
        cout << w << " ";
    cout << ")" << endl;

    // Fill the first 3 positions with a value of 1, saving position.
    auto pos = fill_n( v.begin(), 3, 1 );

    cout << "modified v = ( " ;
    for ( const auto &w : v )
        cout << w << " ";
    cout << ")" << endl;

    // Fill the next 3 positions with a value of 2, using last position.
    fill_n( pos, 3, 2 );

    cout << "modified v = ( " ;
    for ( const auto &w : v )
        cout << w << " ";
    cout << ")" << endl;

    // Fill the last 3 positions with a value of 3, using relative math.
    fill_n( v.end()-3, 3, 3 );

    cout << "modified v = ( " ;
    for ( const auto &w : v )
        cout << w << " ";
    cout << ")" << endl;
}

Output

  vector v = ( 0 0 0 0 0 0 0 0 0 )
modified v = ( 1 1 1 0 0 0 0 0 0 )
modified v = ( 1 1 1 2 2 2 0 0 0 )
modified v = ( 1 1 1 2 2 2 3 3 3 )

Требования

Заголовок: <algorithm>

Пространство имен: std

См. также

Ссылки

Библиотека стандартных шаблонов