用于存储(插入/获取/删除)具有整数值多键的结构的 C++ 容器是指针

标签 c++ dictionary queue

如何存储以下结构 键=[k1,k2,...,kn];值(value)=无效* n 在编译时是未知的。它对于对象是不变的,但对于类是不同的。 它必须像树,但 C++ STL。它必须尽可能快地插入、移除和获取。 我认为它必须是 map[integer, map[integer, ... map[integer, void*]...]] 但我无法理解如何使用未知级别“n”实现它。

它用于“队列”,其中项目可以以未知顺序插入,但必须以正确的顺序出队 1,1,1 然后 1,1,2, .... 1,1,V3max, 1, 2,1, ...

最佳答案

您可以创建一个像这样的简单结构:

struct MyType
{
  std::string name;
  std::map<int, MyType> mA;
};

然后创建一个接受由键标识的 MyType 的根映射

std::map<int, MyType> mRootMap;

然后你可以这样添加(为了简单,没有递归)

MyType a;
MyType b;
MyType c;
c.name = "This is C";
b.mA[789] = c;
a.mA[456] = b;
mRootMap[123] = a; 

然后你可以这样访问

std::cout << mRootMap[123].mA[456].mA[789].name << std::endl;

输出:

This is C

关于用于存储(插入/获取/删除)具有整数值多键的结构的 C++ 容器是指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33874034/

相关文章:

c++ - 在此代码示例中,.push() 是在锁定时失败还是等待?

java - Amazon SQS 长轮询不返回所有消息

.net - 在线程(.NET)中锁定或 try catch 字典是否更有效

html - 使用诸如 map 区域的坐标属性之类的东西将 div 放置在特定坐标处

c# - HttpRuntime.Cache 对象中缓存键的最大长度?

c++ - 模板化类中参数包的语法

python - 在一个线程中拥有deque和Queue的优点

c++ - 运算符重载 : No match for 'operator[]'

c++ - 在 OpenCV 中计算 ROI 内的对象区域

c++ - 实例化对象和对象成员