我们使用 multimap<int,string> 存储数十万个项目 (>300K),当我们意识到我们需要添加更多数据进行分析时。所以我们创建了一个类,其中包含一些项目和必要的 stl 重写运算符,并使用了 multimap<ourStruct,String>。这工作得很好,并且没有比以前花太多时间(使用一些测试数据),当我们意识到一个 stl <list> 就可以了,只要我们在完成添加所有项目后对其进行排序。令我们惊讶的是,我们发现将所有项目添加到 multimap 仍然很容易超过将所有项目添加到列表然后排序的总时间。
这对我们 EE 类型没有意义,因为我们认为每次插入到 multimap 都必须遍历列表然后将其添加到末尾,而与列表一样,我们只需添加到末尾(通过推回) ,那么希望排序不会花那么长时间。
另一个事实:我们最初在没有对列表进行排序的情况下进行了比较测试,并且很高兴看到使用列表的速度显着提高。然后我们添加了排序,有点惊呆了……
那里的任何 CS 大师都愿意权衡吗?