gpt4 book ai didi

具有 2 个键的 C++ 映射,因此可以使用任何 1 个键来获取值

转载 作者:行者123 更新时间:2023-12-02 09:53:00 25 4
gpt4 key购买 nike

我有一个用例,在给定键的情况下,我必须从 map 中获取值。
现在键可以是 ID(整数)或名称(字符串)。
我想到了以下结构
map1 :- ID -> 值
map2 :- 名称 -> ID
并将这个结构隐藏在一个通用的抽象之下,以便可以使用名称或 ID 来检索值。
有一个更好的方法吗?

最佳答案

看看 boost::multi_index .它允许您使用所需的任何查找组合来制作容器。

struct item
{
int ID;
std::string Name;
value_t Value;
};

namespace bmi = boost::multi_index;
using map_t = bmi::multi_index_container<item, bmi::indexed_by<
bmi::unordered_unique<bmi::tag<struct ID>, bmi::member<item, int, &item::ID>>,
bmi::unordered_unique<bmi::tag<struct Name>, bmi::member<item, std::string, &item::Name>>
>>;

map_t Map;
/* add some values */
auto idIt = Map.get<ID>().find(1); // lookup by ID
auto nameIt = Map.get<Name>().find("Vaibhav Gupta"); // lookup by Name

关于具有 2 个键的 C++ 映射,因此可以使用任何 1 个键来获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62808460/

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