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

Jas*_*son 0 c++

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

std::map<int, int, my_struct*> my_map;
Run Code Online (Sandbox Code Playgroud)

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

struct my_struct* test1 = get_struct_ptr();
my_map[1, 5] = test1;
Run Code Online (Sandbox Code Playgroud)

目前我收到了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
Run Code Online (Sandbox Code Playgroud)

有没有办法用std :: map做到这一点,还是有另一种类型可以处理这个要求?

Ton*_*roy 5

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

std::map<std::pair<int, int>,  my_struct*> my_map;
my_map[{1, 5}] = test1;
Run Code Online (Sandbox Code Playgroud)

或者,你可以使用一个std::tuple<int, int>,一个std::array<int, 2>struct两个int数据成员(但是你必须"教" map如何通过自己来比较这些结构operator<;许多现有的问题和答案详细说明如何做这个).