在我的程序中有一些用户和他们的客户。 我有用户及其相关客户的列表。
例子
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/