Анимация
JavaScript


Главная  Библионтека 

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

О Читаются все символы (включая начальные пропуски) до выполнения одного из следующих условий:

□ strrn.goo60 возвращает false (что может привести к выдаче соответствующего исключения);

□ из потока данных читается delim или 5t/7w.widen(\n);

□ str.max size() символов сохраняется.

О Разделитель строк извлекается из потока данных, но не присоединяется к str.

О Внутренняя память перераспределяется по мере необходимости.

О Параметр istream - входной поток данных типа basicJstream<c/?Gr>, где char - тип символов (см. с. 562).

1олучение итераторов

Iterator string: -.begin ()

const 1 terator string: :begir\ () const

О Обе формы возвращают итератор произвольного доступа, установленный в начало строки (в позицию первого символа).

О Для пустой Строки вызов beginQ эквивалентен вызову end().

iterator string:;end () const 1terator string:: end () const

О Обе формы возвращают итератор произвольного доступа, установленный в конец строки (в позицию за последним символом).

О Символ в позиции end() не определен, поэтому конструкции вида *s.end() приводят к непредсказуемым последствиям.

О Для пустой строки вызов end() эквивалентен вызову begin().

reverse iterator string::rbegiи О const reverse iterator string::rbegin О const

О Обе формы возвращают итератор произвольного доступа, установленный в позицию начала перебора строки в обратном направлении (то есть в позицию последнего символа).

О Для пустой строки вызов rbeginO эквивалентен вызову rendO.

О Обратные итераторы описаны на с. 270

reverse iterator string: :гег\б () const reverse iterator string::rend О const

О Обе формы возвращают итератор произвольного доступа, установленный в позицию конца перебора строки в обратном направлении (в позицию перед первым символом).

О Символ в позиции rendO не определен, поэтому конструкции вида *s.rendO приводят к непредсказуемым последствиям.



О Для пустой строки вызов rend() эквивалентен вызову rbegin(). О Обратные итераторы описаны на с. 270

Поддержка распределителей памяти

Для строк также определены стандартные члены классов, обеспечивающие поддержку распределителей памяти.

string::allocator type

О Тип распределителя памяти.

О Третий параметр шаблона basic string<>.

О Для типа string - эквивалент allocator<char>.

allocator type str/:?: :get anocator О const

Возвращает модель распределения памяти, используемую строкой.

Распределитель памяти может также передаваться в необязательном аргументе всех конструкторов строк. Ниже перечислены строковые конструкторы с необязательными аргументами в соответствии со стандартом:

namespace std {

tempiate<class charT,

class traits = char traits<charT>. class Allocator = allocator<charT> > class basic string { public:

Конструктор no умолчанию

explicit basic string(const Allocators a = Allocator()):

Копирующи! конструктор basic string(const basic string& str,

size type str idx = 0.

size type str num = npos): basic string(const basic string& str.

size type str idx. size type str num.

const Allocators):

Конструктор для С-строк basicstringCconst charT* cstr.

const Allocators a = AllocatorO):

Конструктор для симвопьных массивов basic stringCconst charT* chars. size type chars len, const Allocators a = AllocatorO):

Конструктор для num экземпляров символа basic string(size type num. charT c.

const Allocators a = AllocatorO):



Конструктор для интервала символов

template<class InputIterator>

basic string(Inputlterator beg. Inputlterator end.

const Allocators a = AllocatorO):

Эти конструкторы ведут себя так, как описано на с. 490, но дополнительно позволяют передать пользовательский объект распределителя памяти. Если строка инициализируется другой строкой, то вместе с содержимым копируется и распределитель памяти*. За дополнительной информацией о распределителях памяти обращайтесь к главе! 5.

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



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