Vectors are reused for each vehicle chain to save on reallocations.
This uses C++20 default operator<=> to provide comparisons of some objects. This works properly with caches that containers.