Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_voprosy_k_ekzamenu_po_C.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
242 Кб
Скачать
☆

42. Функции работы со строками. Получение характеристик строк

В классе string определено несколько функций-членов, позволяющих получить длину строки и объем памяти, занимаемый объектом:

size_type size() const; // Количество элементов строки

size_type length() const; // Количество элементов строки

size_type max_size() const; // Максимальная длина строки

size_type capacity() const; // Объем памяти, занимаемый строкой

bool empty() const; // Истина, если строка пустая

43. Обратные итераторы. Итераторы вставки. Пото­ковые итераторы

Итератор — это обобщение понятия указателя для работы с различными структурами

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

Итераторные классы и функции описаны в заголовочном файле <iterator>. При использовании стандартных контейнеров этот файл подключается автоматически.

Прямой итератор поддерживает все операции входных и выходных итераторов и может использоваться везде, где требуются входные или выходные итераторы.

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

Итератор произвольного доступа поддерживает все операции двунаправленного, а кроме того, переход к произвольному элементу последовательности и сравнение итераторов.

Итератор может быть действительным (когда он указывает на какой-либо элемент) или недействительным. Итератор может стать недействительным в следующих случаях:

  • итератор не был инициализирован;

  • контейнер, с которым он связан, изменил размеры или уничтожен;

  • итератор указывает на конец последовательности.

Обратные итераторы

Для двунаправленных итераторов и итераторов произвольного доступа определены разновидности, называемые адаптерами итераторов. Адаптер, просматривающий последовательность в обратном направлении, называется reverse_iterator.

Обратный итератор имеет защищенное поле данных, называемое текущим итератором — current. Current на самом деле указывает на элемент, следующий за тем, на который указывает обратный итератор

Итераторы вставки

Итераторы вставки так же, как и обратные, являются адаптерами итераторов.

Они предназначены для добавления новых элементов в начало, конец или произвольное место контейнера. В стандартной библиотеке определено три шаблона классов итераторов вставки, построенных на основе выходных итераторов: back_insert_iterator, front_insert iterator и insert iterator.

Кроме того, определены три функции вставки:

  • template <class С> back_insert_iterator<C>

back_inserter(C& х);

  • template <class C> front_insert_terator<C>

front_inserter(C& x);

  • template <class С class Iter> insert_iterator<C>

inserter(C& x. Iter i);

Здесь С — контейнер, в который требуется вставить элементы. Функция back_1nserter вставляет элементы в конец контейнера, front_inserter — в начало, а inserter — перед элементом, на который ссылается ее аргумент-итератор.