我想创建一个记录来保存有关信息
- a)存在什么样的元素以及
- b) 存在的每种元素的数量
在树的一个节点中。我将只为叶节点显式存储此信息,而父节点的信息可以通过组合所有子节点的信息来获得(例如,孩子 1 有 3 个 A 对象,1 个 B 对象,孩子 2 有 1 A 的对象,C 的 2 个对象——父级有 A 的 4 个对象,B 的 1 个对象和 C 的 2 个对象)。
当从父节点请求这些信息时我会小心,不要先请求、使用和丢弃子节点的信息,然后再请求它的父节点,但向上构造将是一个常见的操作。其他两个常见的操作直接来自我存储的内容:种类 X 的对象是否存在?有多少 X 类物体存在?还有多少种物体存在?
对象种类表示为整数,并且对象编号始终是整数值。什么是更好的选择(以及所选选择的论据):
- 使用
std::multiset<int>
, 和std::multiset::count()
操作std::multiset::find()
(更容易联合但元素重复,总的不同元素计数难以获得) - 使用
std::map<int, std::size_t>
种类作为键,对象数量作为值(没有重复的元素,std::map::find()
存在函数,大小给出了存储的对象种类的正确数量,但是访问不存在的元素会无意中增加大小)
谢谢你的建议!