В таблице 54, X обозначает класс черты , определяющий типы и функции для символьного типа контейнера CharT; c и d обозначают значения типа CharT; p и q обозначают значения типа const CharT*; s обозначает значение типа CharT*; n, i и j обозначают значения типа size_t; e и f обозначают значения типа X::int_type; pos обозначает значение типа X::pos_type; state обозначает значение типа X::state_type; и r обозначает lvalue типа CharT. Операции с Чертами не должны вызывать исключений.
Выражение | Тип возврата | Утверждение / примечание | Сложность |
до / после состояния | |||
X::char_type | charT | (описано в [char.traits.typedefs]) | время компиляции |
X::int_type | (описано в [char.traits.typedefs]) | время компиляции | |
X::off_type | (описано в [char.traits.typedefs]) | время компиляции | |
X::pos_type | (описано в [char.traits.typedefs]) | время компиляции | |
X::state_type | (описано в [char.traits.typedefs]) | время компиляции | |
X::eq(c,d) | bool | Returns: следует ли c рассматривать как равное d. | постоянный |
X::lt(c,d) | bool | Returns: следует ли c рассматривать как меньшее, чем d. | постоянный |
X::compare(p,q,n) | int | Returns: 0 если для каждого i в [0,n), X::eq(p[i],q[i]) есть true; иначе, отрицательное значение , если для некоторых j ин [0,n), X::lt(p[j],q[j]) это true и для каждого i дюйма [0,j) X::eq(p[i],q[i]) является true; иначе положительное значение. | линейный |
X::length(p) | size_t | Returns: самый маленький i такой что X::eq(p[i],charT()) есть true. | линейный |
X::find(p,n,c) | const X::char_type* | Returns: наименьшее q в [p,p+n) таком, то X::eq(*q,c) есть true, в противном случае ноль. | линейный |
X::move(s,p,n) | X::char_type* |
для каждого i в [0,n), выполняет X::assign(s[i],p[i]). Копирует правильно даже там, где диапазоны [p,p+n) и [s,s+n) перекрываются. Returns: s. | линейный |
X::copy(s,p,n) | X::char_type* |
Requires: p не в [s,s+n). Returns: s. для каждого i в [0,n), выполняет X::assign(s[i],p[i]). | линейный |
X::assign(r,d) | (не используется) | назначает r=d. | постоянный |
X::assign(s,n,c) | X::char_type* |
для каждого i в [0,n), выполняет
X::assign(s[i],c). Returns: s. | линейный |
X::not_eof(e) | int_type | Returns: e если X::eq_int_type(e,X::eof()) есть false, в противном случае такое значение f , которое X::eq_int_type(f,X::eof()) есть false. | постоянный |
X::to_char_type(e) | X::char_type | Returns: если для некоторых c, X::eq_int_type(e,X::to_int_type(c)) это true, c; иначе какое-то неопределенное значение. | постоянный |
X::to_int_type(c) | X::int_type | Returns: некоторая ценность e, ограниченная определениями to_char_type и eq_int_type. | постоянный |
X::eq_int_type(e,f) | bool | Returns: для всех c и d, X::eq(c,d) равно X::eq_int_type(X::to_int_type(c), X::to_int_type(d)); в противном случае выдает true if e и f обе копии X::eof(); в противном случае уступает, false если одно из e и f является копией, X::eof() а другое - нет; в противном случае значение не указано. | постоянный |
X::eof() | X::int_type | Returns: такое значение e , которое X::eq_int_type(e,X::to_int_type(c)) есть false для всех значений c. | постоянный |