Класс QPair
Класс QPair — шаблонный класс, хранящий пару элементов. Подробнее...
| Заголовок: | #include <QPair> |
| qmake: | QT += core |
Открытые типы
| typedef | first_type |
| typedef | second_type |
Открытые функции
| 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/qt-5.12/qpair.html