diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c
index dc018a2ef286cf84a1b5b38f073849043037faf3..1639cdba967090cc604bec97b929ee69e07268a6 100644
--- a/gdb/cp-namespace.c
+++ b/gdb/cp-namespace.c
@@ -32,7 +32,7 @@
 #include "language.h"
 #include "namespace.h"
 #include "inferior.h"
-#include <map>
+#include "gdbsupport/unordered_map.h"
 #include <string>
 #include <string.h>
 
@@ -352,6 +352,9 @@ cp_lookup_symbol_in_namespace (const char *the_namespace, const char *name,
   return sym;
 }
 
+/* Type used for collecting symbols.  Maps names to symbols.  */
+using symbol_map = gdb::unordered_map<std::string, block_symbol>;
+
 /* This version of the function is internal, use the wrapper unless
    the list of ambiguous symbols is needed.
 
@@ -391,8 +394,7 @@ cp_lookup_symbol_via_imports (const char *scope,
 			      const int search_scope_first,
 			      const int declaration_only,
 			      const int search_parents,
-			      std::map<std::string,
-				       struct block_symbol>& found_symbols)
+			      symbol_map& found_symbols)
 {
   struct block_symbol sym = {};
   int len;
@@ -509,7 +511,7 @@ cp_lookup_symbol_via_imports (const char *scope,
 			      const int declaration_only,
 			      const int search_parents)
 {
-  std::map<std::string, struct block_symbol> found_symbols;
+  symbol_map found_symbols;
 
   cp_lookup_symbol_via_imports(scope, name, block, domain, 0,
 			       declaration_only, search_parents,
