我正在编写一个程序,目前使用向量,该程序需要以这样一种方式存储数据(以特定概率移动的原子),以便可以以有偏的随机概率有效地选择它。
目前,向量似乎很好,因为我可以将多个位点分配给一个概率,然后选择一个随机位点(因此,如果原子 a 的相对概率为 0.6,而原子 b 的相对概率为 0.4,我可以将 3 个元素分配给a 和 2 到 b 然后随机选择任何元素)
但是,然后我需要删除与所选择的原子相关的所有站点,这在向量中意味着找到它们(或单独存储它们的位置),将它们交换到最后并使用 push_back。根据我的操作方式,它似乎非常慢或非常占用内存。
看起来哈希表可能是一个更好的结构,因为它们可以让我更容易地查找与特定原子相关的站点,但我仍然可以使用与哈希表相同的加权选择机制吗?
我以前从未使用过 hashtabes,还有其他并发症吗?还是我应该研究另一种更好的结构?