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

时间:2018-04-28 07:41:14

标签: c++

我想使用std :: map通过使用两个整数作为键查找来存储指向结构的指针,例如:

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执行此操作,还是有其他类型可以处理此要求?

1 个答案:

答案 0 :(得分:5)

map总是从一种类型到另一种类型。您可以使用std::pair<int, int>创建一个类型,以便为密钥存储两个int,所以:

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

或者,您可以使用std::tuple<int, int>std::array<int, 2>struct与两个int数据成员(但之后您必须“教授” map如何通过使用您自己的operator<来比较这些结构;许多现有问题和答案详细说明如何执行此操作。