vector veclntegers (3);
1 0 :
// Заполнить все элементы контейнера значением 9
fill (veclntegers.begin (), veclntegers.end (), 9);
// Увеличить размер вектора до 6 элементов
veclntegers.resize (6);
16:
// Заполнить эти три элемента значением -9, начиная с позиции 3
fill_n (veclntegers.begin () + 3, 3, -9);
19:
cout « "Contents of the vector are: " « endl;
for(size_t nlndex = 0; nlndex < veclntegers.size (); ++ nlndex)
{
cout « "Element [" « nlndex « "] = ";
cout « veclntegers [nlndex] « endl;
}
26:
return 0;
}
Результат
Contents of the vector are:
Element [0] = 9
Element [1] = 9
Element [2] = 9
Element [3] = -9
Element [4] = -9
Element [5] = -9
Анализ
Листинг 23.4 использует функции f i l l () и f i l l _ n () для инициализации содержи мого контейнера двумя отдельными наборами значений, как показано в строках 12 и 18. Обратите внимание на применение функции r e s i z e () перед заполнением диапазона значениями. По существу, это создает элементы, которые впоследствии будут заполнены значениями. Алгоритм f i l l () воздействует на весь диапазон, а алгоритм f i l l _ n () спо собен воздействовать на часть диапазона.
Использование алгоритмов STL
|
525
|
Использование алгоритма std :: generate ()
для инициализации элементов значениями, созданными во время выполнения
Подобно тому, как функции f i l l () и f i l l n () заполняют коллекцию определенным
значением, такие алгоритмы библиотеки STL, как g e n e r a te () и g e n e r a te _ n (), инициа лизируют коллекции значениями, возвращаемыми унарной функцией.
Вы можете использовать функцию g e n e r a te () для заполнения диапазона с использо ванием возвращаемого значения функции-генератора:
generate ( veclntegers.begin (), veclntegers.end () // диапазон
, rand ); // вызов функции-генератора
Алгоритм g e n e r a te _ n () подобен алгоритму g e n e r a t e () за исключением того, что необходимо указать количество элементов, которым будут присвоены значения, а не гра ницы диапазона:
generate_n (listlntegers.begin (), 5, rand);
Таким образом, вы можете использовать эти два алгоритма для инициализации содер жимого контейнера содержимым файла, например, или просто случайными значениями, как показано в листинге 23.5.
Л И С Т И Н Г 2 3 .5 . Использование алгоритмов generate () и generate_n ()
для инициализации коллекции случайными значениями______________________________________
Do'stlaringiz bilan baham: |