- 主题:这个算法怎么设计?
ID 包含组名,比如 hgoldfish 和 speedboy2998 的 ID 带上组:
nowhere.dev.hgoldfish
nowhere.dev.speedboy2998
放到 multimap 里面,找到某个 const_iterator 以后,再往前或者往后搜索,找到其它同部门的。
edit: 发现你是用 int64_t,那可以分成两部分,高位是组,低位是 staff id
【 在 speedboy2998 (极品飞车) 的大作中提到: 】
: 有多个公司,每个公司有多个组,每个公司的每个职员属于且仅属于公司的某个组。
: 现在知道一个职员的ID,怎么快速地找出得到他所在组的全部成员。
: 我简单设计了一个觉得太麻烦了。
: ...................
--
修改:hgoldfish FROM 124.72.119.*
FROM 124.72.119.*
一个公司不会有太多职员吧。。可以从这个地方进行优化。
【 在 speedboy2998 (极品飞车) 的大作中提到: 】
: SAAS 平台,可能几十万个公司。几百万上千万职员。
--
FROM 112.47.122.*
做个映射就行了。
你强行给每个公司赋值一个 int64_t 高位。做映射表进行转换。
把 int64_t 分成三部分,第一位是标志,接着 23 位是公司 ID,再划分 16 位是部门,24 位是职员。
这样的划分有个好处,只要排序一下,同一个公司,同一个部门的就会都排在一起。它们在 multimap 会存储在相邻的位置。
【 在 speedboy2998 (极品飞车) 的大作中提到: 】
: 这里的ID我写错了,ID是字符串,不同的公司可能相同,可以理解为名字
--
修改:hgoldfish FROM 112.47.122.*
FROM 112.47.122.*
不需要的,它的职员 ID 在公司里面是唯一的。只是在这里和公司 ID 合并起来存储。日常使用的时候,不要带上部门 ID 就行了。
【 在 fryingbird (永远微笑的小丑) 的大作中提到: 】
: 这个方案不好
: 员工换组的时候
: 需要更改id
: ...................
--
FROM 112.47.122.*
如果要用数据库,那还不如用 java/python 呢。C++ 在后端经常被拿来做内存中的数据模型,方便其它组件快速访问。
【 在 lixunhuansk (李寻欢) 的大作中提到: 】
: 楼主还要用C++ 实现,你觉得他会喜欢数据库么?
: 这种问题最基本的思路都是 SQL搞定..
--
FROM 112.47.122.*