c++ - 应使用哪种数据结构 multimap、boost::bimap、multiset 或任何其他数据结构

标签 c++ boost stl bimap

在我的程序中有一些用户和他们的客户。 我有用户及其相关客户的列表。

例子

U1 -> c1, c2, c3, c5, c8, c10, c12
U2 -> c3, c5, c13, c8, c12, c14
U3 -> C2, C5, c8, c11, c12, c14
..
...
....
.....
and many more.

一些客户端在用户列表中很常见。

我想使客户与用户的层次结构相反。 如果任何客户端有任何更新,那么它只会发送给与该客户端关联的那些用户。

请建议我应该使用哪种数据结构 map、multimap、boost::bimap、multiset

最佳答案

也许这是 Boost.Bimap 的一个用例,其中两个键都是多重集,并且 bimap 中的条目表示用户和客户端之间的单个连接。所以对于下面的设置

U1 -> C1 C2 C3
U2 -> C4 C1
U3 -> C5 C1

你会有条目 (U1, C1) , (U1, C2) , (U1, C3) , (U2, C4) , (U2, C1) , (U3, C5)(U3, C1) .

您可以按顺序遍历这两个键,即 U1, U1, U1, U2, U3在左边和C1, C1, C1, C2, C3, C4, C5在右侧。 (注意双方如何包含重复的条目!)

关于c++ - 应使用哪种数据结构 multimap、boost::bimap、multiset 或任何其他数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14920502/

相关文章:

c++ - 如何在ros中使用Qt库

python - 如何在 boost python 中公开采用可变参数的 C++ 函数

c++ - boost-units - 使用无量纲类型的任意系统

c++ - C++11 中的 std::forward_list swap() 实现

c++ - CascadeClassifier.load() 仅在发布时出错

c++ - 我怎样才能接受这样的字符串输入?

C++ 从相对路径获取模型/资源的绝对路径

c++ - 新分配的 std::vector<int> 元素是否初始化为 0?

c++ - ICPC: "identifier "_Node_allocator"未定义"使用 std::map 和 icpc 编译 C++ 文件时

c++ - 使用指针的二维数组的非访问冲突