[英]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.