如何在C++中使用结构生成映射

How do I make a map using a struct in C++?

本文关键字:结构 映射 C++      更新时间:2023-10-16

我正在尝试使用C++结构来制作一个简单的映射。

例如

如果我有

struct Map { char name; int age };
Map MapObj[] = { {'charles', 10}, {'kate', 20}, {'nate', 10} } 

如何使用地图了解凯特的年龄?我试过MapjObj[凯特],但它不起作用。如何使用名称访问年龄?

您可以使用C++提供的<algorithm>功能,特别是-std::find;类似于:

auto pos = std::find(
std::begin(MapOjb), 
std::end(MapObj),
[](const Map& m) { return m == "kate"}
);

但请注意:

  1. name必须是std::stringchar *(在后一种情况下,您将使用strcmp(),而不是纯字符串比较(
  2. MapMapObj在这里的名字选择非常糟糕

将创建的数组的开头和结尾以及lambda函数传递给它。