OneGuy Asked:2020-09-16 03:10:06 +0000 UTC2020-09-16 03:10:06 +0000 UTC 2020-09-16 03:10:06 +0000 UTC 在 C++ 方法中使用对 772 有一种方法适用于双端队列对的队列。对于某些输入数据,该方法必须适用于该对的第一部分或第二部分。例子: void max3(deque<pair<int, int>> & q, [first or second] ) { int a = q[0].[first or second]; cout << a << endl; } c++ 2 个回答 Voted Best Answer HolyBlackCat 2020-09-16T04:11:50Z2020-09-16T04:11:50Z 我会这样写: void max3(deque<pair<int, int>> &q, bool use_second) { int a = (use_second ? q[0].second : q[0].first); cout << a << endl; } 是否可以通过参数中的直接指示来实现这一点,无论是第一个还是第二个,而没有不必要的方法和条件? 然后你可以使用指向类成员的指针(pointer-to-member): void max3(deque<pair<int, int>> &q, int pair<int, int>::* member) { int a = q[0].*member; cout << a << endl; } 使用示例:max3(foo, &pair<int, int>::first). AR Hovsepyan 2020-09-16T13:31:24Z2020-09-16T13:31:24Z 特别是对于给定的整数类型对,它很简单: void max3(const std::deque<pair<int, int>>& q, bool x ) { std::cout << q[0].first * x + q[0].second * (!x) << std::endl; } PS 布尔类型参数的优点是可以传递任何谓词。好吧,当然,你不能在这里没有检查,因为(永远)在函数中你需要检查队列是否为空
我会这样写:
然后你可以使用指向类成员的指针(pointer-to-member):
使用示例:
max3(foo, &pair<int, int>::first).特别是对于给定的整数类型对,它很简单:
PS 布尔类型参数的优点是可以传递任何谓词。好吧,当然,你不能在这里没有检查,因为(永远)在函数中你需要检查队列是否为空