In the current approach in AdjList, on some platform Suffix array ends up filled with
already invalidated pointers due to the reallocation.
Construct the suffix array after storing all suffixes first.

Refer to the C++03 Standard Sections 23.2.4.2 and 23.2.4.3.