Когда хорошо использовать std::pair?
У меня сложилось впечатление, что всегда лучше определить свою собственную структуру, чтобы я мог использовать значимые имена полей вместо first
а также second
,
Одно место, где стандарт использует std::pair
для доступа к элементам std::map
, first
это ключ, и second
Значение. Не было бы намного лучше иметь конкретный key_value_pair
шаблон и ссылаться на его поля как key
а также value
вместо first
а также second
? Мне кажется, что это сделает код значительно более читабельным без каких-либо затрат.
1 ответ
Я обычно использую пары (и кортежи), когда мне нужен локальный пакет из 2 или более объектов.
Основной вариант использования предназначен для возвращаемого типа функции: C++ не позволяет возвращать несколько значений, но позволяет возвращать структуру с несколькими полями. Вместо того, чтобы использовать выходные параметры, я предпочитаю использовать пару или кортеж.
Второй вариант использования предназначен для специального хранения элементов; например, чтобы автоматически генерировать operator<
за
struct A { int a; int b; int c; };
Ты можешь написать operator<
сюда:
bool operator<(A const& left, A const& right) {
return std::tie(left.a , left.b , left.c )
< std::tie(right.a, right.b, right.c);
}
он автоматически генерирует правильный лексикографический порядок (так много людей испортят эти операторы...).