Строки, пары и кортежи в STL

Строки, пары и кортежи в STLИз этой статьи вы получите базовые знания о строках, парах и кортежах в STL, прежде чем перейти к более подробным и более широким понятиям, таким как итераторы, алгоритмы и контейнеры.

Хотя строки используются так же, как и в общем языке C++, их стоит обсудить с точки зрения STL. Мы можем представить себе строки как о последовательном контейнере символов. Кроме того, поскольку мы имеем дело с классами шаблонов в STL, совершенно необходимо, чтобы вы знали концепцию PAIR и TUPLE в отношении STL.

Строки в STL

Строки в STL поддерживают как формат ASCII, так и формат Unicode (широкосимвольный).

STL поддерживает два типа строк:

1) string: это строка в формате ASCII, и чтобы включить этот тип строковых объектов в программу, нам нужно включить файл string.h в нашу программу.

#include <string>

2) wstring: это строка расширенных символов. Чтобы включить объекты wstring в нашу программу, мы подключаем файл xstring.

#include <xstring>

Будь то ASCII или Unicode, строки в STL поддерживают различные методы точно так же, как и другие контейнеры STL.

Вот некоторые из методов, поддерживаемых строковым объектом:

  • begin() : возвращает итератор в начало.
  • end() : возвращает итератор в конце.
  • insert() : вставляет в строку.
  • erase () : удаляет символы из строки.
  • size() : возвращает длину строки.
  • empty() : очищает содержимое строки.

Читать также:  Сортировка вставками в C++

Давайте напишем простую программу для демонстрации работы строк STL:

Вывод данных:

WORLD
Length of string:5

В приведенном выше коде, как вы  можете видеть, мы объявляем строковый объект str1, а затем с помощью метода вставки добавляем символы один за другим в конец строки. Затем, используя объект итератора, мы отображаем строку.

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

Пары в STL

Класс PAIR в STL удобен при программировании ассоциативных контейнеров. PAIR — это класс шаблонов, который объединяет два значения одного или разных типов данных.

Общий синтаксис:

pair<T1, T2> pair1, pair2;

Вышеупомянутая строка кода создает две пары, т.е. пара1 и пара2. Обе эти пары имеют первый объект типа T1 и второй объект типа T2.

T1 — первый член, а T2 — второй член пары1 и пары2.

Ниже приведены методы, поддерживаемые классом PAIR:

  • оператор (=): присвойте значения паре.
  • swap: меняет местами содержимое пары.
  • make_pair(): создает и возвращает пару объектов, определенных в списке параметров.
  • операторы ( == , != , > , < , <= , >= ) : лексикографически сравнивает две пары.

Читать также:  Библиотечные функции в C++

Давайте напишем простую программу, которая показывает использование этих функций в коде:

Вывод данных:

Pair1 First member: 1
Pair2 Second member: MonitorBankRu
Pairs are not equal

В приведенной выше программе мы создаем две пары целочисленных типов и еще одну пару целочисленного типа и строки. Затем с помощью функции «make_pair» мы присваиваем значения каждой паре.

Далее мы сравниваем пару1 и пару2, используя оператор «==», чтобы проверить, равны они или нет. Эта программа демонстрирует базовую работу класса PAIR.

Кортежи в STL

Концепция Tuple является расширением Pair. В паре мы можем объединить два разнородных объекта, тогда как в кортеже мы можем объединить три разнородных объекта.

Общий синтаксис кортежа:

tuple<T1, T2, T3>tuple1;

Так же, как и пара, кортеж также поддерживает аналогичные функции и некоторые дополнительные функции.

Они перечислены ниже:

  • Constructor: для создания нового кортежа.
  • Tuple_element: возвращает тип элемента кортежа.
  • Make_tuple(): создает и возвращает кортеж, содержащий элементы, описанные в списке параметров.
  • Операторы ( == , != , > , < , <= , >= ): лексикографически сравнивают две пары.
  • Оператор (=): нуден для присвоения значения кортежу.
  • Swap: меняет местами значения двух кортежей.
  • Tie: привязывает значения кортежа к его ссылкам.

Читать также:  Введение в объектно-ориентированное программирование на C++

Давайте используем некоторые из этих функций в программе, чтобы увидеть их работу:

Вывод данных:

1 Hello C++ Tuples

В приведенном выше коде для демонстрации кортежей мы создаем два кортежа. Первый кортеж tuple1 состоит из трех целых значений. Второй кортеж, т.е. tuple2, состоит из одного целочисленного значения и двух строковых значений.

Затем мы присваиваем значения обоим кортежам, используя функцию make_tuple. Затем с помощью вызова функции «tie» мы привязываем или присваиваем значения из tuple2 к id и двум строкам.

Наконец, мы выводим эти значения. Вывод показывает значения из tuple2, которые мы присвоили идентификатору, и две строки.

Итог

Таким образом, в этой статье мы кратко обсудили строки, пары и кортежи, используемые в STL. Принимая во внимание, что операции со строками аналогичны обычным C++, значит, мы также можем оперировать итераторами с этими строками.

Конструкции пар и кортежей удобны при программировании контейнеров STL, особенно ассоциативных контейнеров.

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

С Уважением, МониторБанк

Добавить комментарий