Анимация
JavaScript
|
Главная Библионтека Первый вызов swap range5() меняет местами элементы colli с соответствующими элементами со112. Остальные элементы со112 не изменяются. Алгоритм swap rangesO возвращает позицию первого элемента, который остался без изменений. Второй вызов меняет местами первые и последние три элемента со112. Один из итераторов является обратным, поэтому обмен происходит с зеркальным отображением злементов. Программа выводит следующий результат: colli: 12 3 4 5 6 7 8 9 С0112: И 12 13 14 15 16 17 18 19 20 21 22 23 colli: 11 12 13 14 15 16 17 18 19 С0112: 1 2 3 4 5 6 7 8 9 20 21 22 23 first element not modified: 20 C0112: 23 22 21 4 5 6 7 8 9 20 3 2 1 Присваивание Заполнение интервала повторяющимся значением void fill (Forwardlterator йед. Forwardlterator еле/, const Т& newValue) void fill n (Outputlterator beg. Size nm. const T& newValue) О Алгоритм fill() присваивает значение newValue каждому элементу в интервале \beg,end). О Алгоритм filLn() присваивает значение newValue первым пит элементам в интервале, начинаюнемся с beg. О Перед вызовом необходимо убедиться в том, что приемный интервал имеет достаточный размер, или использовать итераторы вставки. О Сложность линейная (numberOfElements или пит присваиваний соответственно). Пример использования алгоритмов flll() и Я11 п(). algo/filll.cpp #include "algostuff,hpp" using namespace std: lnt mainO { Вывод десяти экземпляров 7.7 fill n(ostream iterator<float>(cout. " "), Начало приемника 10. Счетчик 7.7): Новое значение cout « endl: llst<string> coll: Вставка девяти экземпляров "hello" fill n(bacl< inserter(coll). Начало приемника 9. Счетчик "hello"); Новое значение PRINT ELEMENTS(coll."coll: "); Замена всех элементов строкой f1ll(con.begln(). coll ,end(). "again"): PRINT ELEMENTS(coll."coll: "): again" Приемник Новое значение Замена всех элементов, кроме двух, строкой "hi" fill n(coll.beginO. Начало приемника coll.size()-2. Счетчик "hi"): Новое значение PRINT ELEMENTS(coll,"coll: "): Замена элементов от второго до лредлоследнего строкой "hmmm" list<str1ng>::iterator posl. pos2: posl = coll .beginO: pos2 = coll .endO; fill (++posl. --pos2. Приемник "hmmm"); Новое значение PRINT ELEMENTS(COll."COll: "); При первом вызове алгоритм filLnQ используется для вывода определенного числа значений. Остальные вызовы fill() и fill n() вставляют и заменяют значения в списке строк. Результат выполнения программы выглядит так: 7.7 7,7 7.7 7.7 7,7 7.7 7.7 7.7 7.7 7.7 coll coll coll coll hello hello hello hello hello hello hello hello hello again again again again again again again again again hi hi hi hi hi hi hi again again hi hmmm hmmm hmmm hmmm hmmm hmrrm hmmm again Присваивание сгенерированных значений void generate (Forwardlterator beg, Forwardlterator end. Func op) void generate n (Outputlterator beg. Func op) Size num. О Алгоритм generateO присваивает значения, сгенерированные вызовом ор() для каждого элемента в интервале [beg,end). О Алгоритм generate n() присваивает значения, сгенерированные вызовом ор{) для первых пит элементов в интервале \beg,...). О Перед вызовом необходимо убедиться в том, что приемный интервал имеет достаточный размер, или использовать итераторы вставки. О Сложность линейная {numberOfElements или пит вызовов ор{) и присваиваний). В следующей программе алгоритмы generate() и generate n() используются для вставки и присваивания случайных значений: algo/generate.cpp #1nclude <cstdllb> #include "algostuff-hpp" using namespace std: int rrainO ( 11st<int> coll; Получение пяти случайных чисел generate n (back 1nserter(coll), Начало приемного интервала 5. Счетчик rand): Генератор значений PRINT ELEMENTS(coll); Замена пятью новыми случайными числами generate (coll.beginO. coll.endO. Приемный интервал rand): Генератор значений PRINT ELEMENTS(coll); Функция rand() упоминается на с. 557. Примерный результат выполнения программы выглядит так: 41 18647 6334 26500 19169 15724 11478 29358 26962 24464 Результат зависит от платформы, так как последовательность случайных чисел, сгенерированная функцией rand(), не стандартизирована. Пример использования алгоритма generate() с объектами функций для построения числовой последовательности приведен на с, 298. Замена элементов Замена внутри интервала void replace (Forwardlterator beg. Forwardlterator end, const T& oldValue, const T& newValue) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 [ 116 ] 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 |