Класс QPair
Класс QPair — шаблонный класс, хранящий пару элементов. Подробнее...
| Заголовок: | #include <QPair> |
| qmake: | QT += core |
Типы public
| typedef | first_type |
| typedef | second_type |
Функции public
| QPair() | |
| QPair(const T1 &value1, const T2 &value2) | |
| QPair(const QPair<TT1, TT2> &p) | |
| QPair(QPair<TT1, TT2> &&p) | |
| void | swap(QPair<T1, T2> &other) |
| QPair<T1, T2> & | operator=(const QPair<TT1, TT2> &p) |
| QPair<T1, T2> & | operator=(QPair<TT1, TT2> &&p) |
Открытые переменные
| T1 | first |
| T2 | second |
Связанные внешние элементы
| QPair<T1, T2> | qMakePair(const T1 &value1, const T2 &value2) |
| void | swap(QPair<T1, T2> &lhs, QPair<T1, T2> &rhs) |
| bool | operator!=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) |
| bool | operator<(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) |
| QDataStream & | operator<<(QDataStream &out, const QPair<T1, T2> &pair) |
| bool | operator<=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) |
| bool | operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) |
| bool | operator>(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) |
| bool | operator>=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) |
| QDataStream & | operator>>(QDataStream &in, QPair<T1, T2> &pair) |
Подробное описание
Класс QPair — шаблонный класс, хранящий пару элементов.
QPair<T1, T2> может быть использован в вашем приложении, если тип STL pair недоступен. Он хранит одно значение типа T1 и одно значение типа T2. Его можно использовать в качестве возвращаемого значения функции, которой необходимо вернуть два значения, или в качестве типа значения контейнера обобщённого контейнера.
Вот пример QPair, который хранит одну QString и одно double значение:
QPair<QString, double> pair;
Компоненты доступны как открытые данные члена, называемые first и second. Например:
pair.first = "pi"; pair.second = M_PI;
Однако, почти всегда предпочтительнее определить небольшой структуру для хранения результата функции с несколькими возвращаемыми значениями. Структура тривиально обобщается на более чем два значения и позволяет использовать более описательные имена членов, чем first и second:
struct Variable {
QString name;
double value;
};
Variable v;
v.name = "pi";
v.value = M_PI; Появление в C++11 автоматического вывода типа переменных (auto) смещает акцент с имени типа на имя функций и членов. Таким образом, QPair, как std::pair и std::tuple, в основном используется в обобщенном (шаблонном) коде, где определение отдельного типа невозможно.
Шаблонные типы данных QPair (T1 и T2) должны быть присваиваемыми типами данных. Например, вы не можете сохранить QWidget как значение; вместо этого сохраняйте указатель на QWidget *. Несколько функций имеют дополнительные требования; эти требования документированы на основе каждой функции.
См. также Классы контейнеров.
Документация по типам членов
typedef QPair::first_type
Тип первого элемента пары (T1).
См. также first.
typedef QPair::second_type
Тип второго элемента пары (T2).
См. также second.
Документация по функциям-членам
QPair::QPair()
Создает пустую пару. Элементы first и second инициализируются значениями по умолчанию.
QPair::QPair(const T1 &value1, const T2 &value2)
Создает пару и инициализирует элемент first значением value1, а элемент second значением value2.
См. также qMakePair().
QPair::QPair(const QPair<TT1, TT2> &p)
Создает пару из другой пары p типов TT1 и TT2. Этот конструктор завершится неудачей, если first нельзя инициализировать из p.first или если second нельзя инициализировать из p.second.
Эта функция была добавлена в Qt 5.2.
См. также qMakePair().
QPair::QPair(QPair<TT1, TT2> &&p)
Перемещающее создание экземпляра QPair, делая его указателем на тот же объект, на который указывает p.
Эта функция была добавлена в Qt 5.2.
void QPair::swap(QPair<T1, T2> &other)
Меняет местами эту пару с other.
Эквивалентно
qSwap(this->first, other.first); qSwap(this->second, other.second);
Перегрузки swap находятся в пространстве имен std, а также через поиск по аргументам (ADL) в пространстве имен T.
Эта функция была добавлена в Qt 5.5.
QPair<T1, T2> &QPair::operator=(const QPair<TT1, TT2> &p)
Копирует пару p в эту пару.
Эта функция была добавлена в Qt 5.2.
См. также qMakePair().
QPair<T1, T2> &QPair::operator=(QPair<TT1, TT2> &&p)
Перемещающее присваивание пары p в этот экземпляр пары.
Эта функция была добавлена в Qt 5.2.
Документация по переменным-членам
T1 QPair::first
Первый элемент пары.
T2 QPair::second
Второй элемент пары.
Связанные не члены
QPair<T1, T2> qMakePair(const T1 &value1, const T2 &value2)
Возвращает QPair<T1, T2>, содержащий value1 и value2. Пример:
QList<QPair<int, double> > list; list.append(qMakePair(66, M_PI));
Это эквивалентно QPair<T1, T2>(value1, value2), но обычно требует меньше набора текста.
void swap(QPair<T1, T2> &lhs, QPair<T1, T2> &rhs)
Это перегруженная функция.
Меняет местами lhs и rhs.
Эта функция была добавлена в Qt 5.5.
bool operator!=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
Возвращает true , если p1 не равно p2; в противном случае возвращает false. Две пары считаются не равными, если их члены данных first не равны или если их члены данных second не равны.
Для этой функции требуется, чтобы типы T1 и T2 имели реализацию operator==().
bool operator<(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
Возвращает true , если p1 меньше p2; в противном случае возвращает false. Сравнение выполняется по членам данных first p1 и p2; если они сравниваются как равные, сравниваются члены данных second для разрешения связи.
Для этой функции требуется, чтобы типы T1 и T2 имели реализацию operator<().
QDataStream &operator<<(QDataStream &out, const QPair<T1, T2> &pair)
Записывает пару pair в поток out.
Для этой функции требуется, чтобы типы T1 и T2 реализовывали operator<<().
См. также Сериализация типов данных Qt.
bool operator<=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
Возвращает true , если p1 меньше или равно p2; в противном случае возвращает false. Сравнение выполняется по членам данных first p1 и p2; если они сравниваются как равные, сравниваются члены данных second для разрешения связи.
Для этой функции требуется, чтобы типы T1 и T2 имели реализацию operator<().
bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
Возвращает true , если p1 равно p2; в противном случае возвращает false. Две пары сравниваются как равные, если их члены данных first сравниваются как равные и если их члены данных second сравниваются как равные.
Для этой функции требуется, чтобы типы T1 и T2 имели реализацию operator==().
bool operator>(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
Возвращает true , если p1 больше p2; в противном случае возвращает false. Сравнение выполняется по членам данных first p1 и p2; если они сравниваются как равные, сравниваются члены данных second для разрешения связи.
Для этой функции требуется, чтобы типы T1 и T2 имели реализацию operator<().
bool operator>=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
Возвращает true , если p1 больше или равно p2; в противном случае возвращает false. Сравнение выполняется по членам данных first p1 и p2; если они сравниваются как равные, сравниваются члены данных second для разрешения связи.
Для этой функции требуется, чтобы типы T1 и T2 имели реализацию operator<().
QDataStream &operator>>(QDataStream &in, QPair<T1, T2> &pair)
Читает пару из потока in в pair.
Для этой функции требуется, чтобы типы T1 и T2 реализовывали operator>>().
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qpair.html