C++映射有2个键,这样任何1个键都可以用来获取值
C++ map with 2 keys, such that any 1 key can be used to get the value
我有一个用例,其中我必须从映射中获得一个值,给定一个键。现在键可以是ID(integer(或Name(string(。
我考虑了以下结构
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
相关文章:
- C++映射有2个键,这样任何1个键都可以用来获取值
- 如果 const 不分配内存,为什么我可以获取 const 的地址?
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- 任何人都可以解释一下我是否需要 & 在第一个代码片段中
- 任何人都可以查明我的递归函数中的错误吗?
- 是否可以获取成员函数模板参数的拥有对象?
- 为什么这个非递归互斥锁可以获取两次?
- 是否可以获取将根据 ADL 调用的函数的 decltype?
- Qt C++创建一个所有类都可以访问的全局变量
- 任何方法都可以在C++中比较数据结构中的许多方法
- 如果构造函数和析构函数可以获取和显示(打印)数据,为什么我们需要 getter 和 setter?
- 在现代 c++ 中,有什么好方法可以获取 arg 类型列表表单函数指针吗?
- 交叉和计算,任何人都可以解释代码吗?
- 我的合并排序没有给出正确的排序数组,任何人都可以解释一下吗?
- 任何人都可以解释这个初始值设定项代码吗?
- 如何使用C++共享目录,以便每个人都可以访问
- 我们可以获取子字符串的常量引用吗?
- 任何人都可以在带有JNI的Android Studio上帮助我解决此错误,是否缺少一些内容?
- 如何制作一个结构程序,在其中可以存储无限量的数据,以便每次您想要时都可以将另一个产品添加到列表中?