gpt4 book ai didi

c++ - 如何在 map 中使用结构指针?

转载 作者:太空宇宙 更新时间:2023-11-04 15:58:38 26 4
gpt4 key购买 nike

我想使用 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 做到这一点,或者是否有其他类型可以满足这个要求?

最佳答案

A map 总是从一种类型到另一种类型。您可以创建一个类型来存储两个 int s 用于使用 std::pair<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< 来比较这些结构;许多现有的问题和答案都详细介绍了如何做到这一点)。

关于c++ - 如何在 map 中使用结构指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50074129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com