Source code for titan_pylib.data_structures.others.pair
[docs]
1class Pair:
2
3 # pair<unsigned int, unsigned int>
4
5 def __init__(self, first: int, second: int):
6 self.d = (first << 32) | second
7
8 def __getitem__(self, k: int):
9 return self.d >> 32 if k == 0 else self.d & 4294967295
10
11 def __setitem__(self, k: int, v: int):
12 self.d = (v << 32) | (self.d & 4294967295) if k == 0 else self.d >> 32 << 32 | v
13
14 @property
15 def first(self) -> int:
16 return self.d >> 32
17
18 @property
19 def second(self) -> int:
20 return self.d & 4294967295
21
22 @first.setter
23 def first(self, v: int):
24 self.d = (v << 32) | (self.d & 4294967295)
25
26 @second.setter
27 def second(self, v: int):
28 self.d = self.d >> 32 << 32 | v
29
30 def __hash__(self):
31 return self.d
32
33 def __str__(self):
34 return f"[{self.d >> 32}, {self.d & 4294967295}]"
35
36 def __repr__(self):
37 return f"Pair({self.first}, {self.second})"