pw_containers: FlatMap class

pw::containers::FlatMap implements the std::map interface, but only
the accessors. pw::containers::FlatMap does not contain any methods
for modifying the data in the map. The FlatMap data during construction
does not have to be sorted and will automatically sort during
construction.

Testing:
Host test -- OK

Change-Id: I01740d0765ea18d81d9db7947a7f61e1ca563058
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/29320
Commit-Queue: Kevin Zeng <zengk@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
diff --git a/pw_containers/BUILD b/pw_containers/BUILD
index 0e2af8c..99926f4 100644
--- a/pw_containers/BUILD
+++ b/pw_containers/BUILD
@@ -25,6 +25,7 @@
 pw_cc_library(
     name = "pw_containers",
     deps = [
+        ":flat_map",
         ":vector",
         ":intrusive_list",
     ],
@@ -51,6 +52,25 @@
     includes = ["public"],
 )
 
+pw_cc_library(
+    name = "flat_map",
+    hdrs = [
+        "public/pw_containers/flat_map.h",
+    ],
+    includes = ["public"],
+)
+
+pw_cc_test(
+    name = "flat_map_test",
+    srcs = [
+        "flat_map_test.cc",
+    ],
+    deps = [
+        ":pw_containers",
+        "//pw_unit_test",
+    ],
+)
+
 pw_cc_test(
     name = "vector_test",
     srcs = [