replace unordered_map with vector