假设我有一张像这样顺时针旋转的 table :
2
1 3
0
这在 4 人游戏中运行良好,但在 3 人游戏中,服务器看不到第 4 把椅子。因此,我必须将 3 个玩家(其中一个可能坐在座位 [3] 上)映射到一个包含 3 [2] 个元素的数组。
因此,如果玩家坐在 2、3、0,则 2 映射到 0,3 映射到 1,0 映射到 2。如果座位是 1、3、0,则 1 映射到 0,3 映射到 1,和 0 到 2。
如果我想要一个 std 映射,那么执行此操作的好算法是什么?
假设您有一个有序的座位结构,并由于您的实现细节不明确而做出一些假设:
std::map<int, int> clockwisePositionMap;
int counter = 0;
for (Seat s : seatList) {
if(s.isOccupied()) {
clockwisePositionMap.insert( pair<int, int>(seat.getNumber(), counter));
counter++;
}
}
请注意,这与您的任何一个示例都不匹配;它始终优先考虑 0,但如果出现问题,您可以根据需要更改 for 循环。