繁体   English   中英

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

[英]How to use a struct pointer in a map?

我想使用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做到这一点,或者有其他类型可以处理此要求?

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>或具有两个int数据成员的struct (但是您必须“教” map如何通过与您自己的operator<比较这些结构operator< ;许多现有的问题和答案详细介绍了如何执行此操作)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM