如何在地图中使用结构指针

How to use a struct pointer in a map?

本文关键字:结构 指针 地图      更新时间:2023-10-16

我想使用std :: map通过使用两个int作为钥匙查找,例如:

,将指针存储到结构
std::map<int, int, my_struct*> my_map;

理想情况下,我想编写类似的代码:

struct my_struct* test1 = get_struct_ptr();
my_map[1, 5] = test1;

目前,我会因my_map定义出现错误:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/map:524:17:
error: called object type 'my_struct *' is not a function or function pointer

有没有办法使用STD :: MAP进行此操作,或者有其他类型可以处理此要求?

map总是从一种类型到另一种类型。您可以使用std::pair<int, int>创建一种类型来存储两个int s,以用于键,因此:

std::map<std::pair<int, int>,  my_struct*> my_map;
my_map[{1, 5}] = test1;

另外,您可以使用带有两个int数据成员的std::tuple<int, int>std::array<int, 2>struct(但是您必须"教" map如何通过与您自己的operator<进行比较,以比较此类结构;&amp;答案详细介绍了如何执行此操作(。