Доступ к значениям с карты с парами - PullRequest
1 голос
/ 13 января 2020

Это объявление и инициализация карты:

    static std::map<VehicleType, std::pair<int const, int const>> TypeToFee = {
            {MOTORBIKE, make_pair(FIRST_HOUR_FEE_MOTOR, HOURLY_FEE_MOTOR)},
            {CAR, make_pair(FIRST_HOUR_FEE_CAR, HOURLY_FEE_CAR)},
            {HANDICAPPED, make_pair(HANDICAPPED_FEE, HANDICAPPED_FEE)}
    };
    static std::map<VehicleType, std::pair<int const, int const>> ::iterator map_iter; 

Что такое python эквивалент (предположим, я получаю type переменную в качестве параметра, который содержит либо CAR, MOTORBIKE, HANDICAPPED)

TypeToFee[type]

А как мне получить только первое или второе значение из каждой пары?

Я поднял голову и обнаружил функцию find, но я не совсем понимаю, как реализовать это на моем примере.

1 Ответ

3 голосов
/ 13 января 2020

С C ++ 17 структурированным связыванием :

VehicleType type = /* ... */;
auto const [ lhs, rhs ] = TypeToFee[type];

С C ++ 11, или если вы sh полностью сбросите lhs или rhs вас можно использовать std::tie с std::ignore:

VehicleType type = /* ... */;
int const rhs;
std::tie(std::ignore, rhs) = TypeToFee[type];

или еще лучше,

VehicleType type = /* ... */;
auto const rhs = TypeToFee[type].second;
...