c++ - multimap 与带集合的 map

标签 c++ map set std multimap

我想知道哪个更有效。

std::map< String, std::set<int> >

std::multimap< String, int >

编辑: 我不打算用这些 map 做任何不寻常的事情。标准的插入、删除、修改、搜索。每个 set 或 multi keyed String 的大小不应超过 100。

最佳答案

我认为这取决于实现,但是(未经)教育的猜测:

实际上,这取决于您将在 multimapstd::set 中保留的整数数量。 multimap 很可能会在对键进行 log(n) 搜索之后对值进行线性搜索。如果您有大量整数值,则对键进行 log(n) 搜索,然后对值进行 log(n) 搜索可能会稍微快一些。

然而,就效率而言,使用 string 键将任何内容存储在 mapmultimap 中几乎肯定会超过两者的差异案例。

如下所述,multimap 可能会更易于使用且更易于维护,从而具有明显的优势。

关于c++ - multimap 与带集合的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7351153/

相关文章:

c++ - Python 提示 SWIG 模块不存在

c++ - 打印 std::array

python - 在 python 中将集合写入输出文件

jquery - 简化此函数以获取和设置值

c++ - 我正在学习 C++,文件处理。我遇到了一段我不明白的代码

c++ - 我可以将 std::ostream& 传递给需要 std::ofstream 的函数吗

java - 如何根据条目集过滤 map 条目

c++ - 包含 Map(具有对象值)和 Multimap(具有 std::string 值)的对象的 boost 序列化:需要什么?

c# - 如何将上下文值传递给 Automapper Map?

c - set_intersection 适用于整数,但不适用于字符,即使它是 void*