- 主题:这个算法怎么设计?
这个方案不好
员工换组的时候
需要更改id
会丢失历史信息
【 在 hgoldfish 的大作中提到: 】
: ID 包含组名,比如 hgoldfish 和 speedboy2998 的 ID 带上组:
: nowhere.dev.hgoldfish
: nowhere.dev.speedboy2998
: ...................
--
修改:fryingbird FROM 123.117.178.*
FROM 123.117.178.*
这个 ?不是数据库更方便么 ?
【 在 speedboy2998 的大作中提到: 】
: 有多个公司,每个公司有多个组,每个公司的每个职员属于且仅属于公司的某个组。
: 现在知道一个职员的 名字 ,怎么快速地找出得到他所在组的全部成员。
:
: ...................
--
FROM 161.117.188.*
不要抵制数据库,哪怕是最简单的sqlite也会让程序简单很多。
【 在 speedboy2998 的大作中提到: 】
: 有多个公司,每个公司有多个组,每个公司的每个职员属于且仅属于公司的某个组。
: 现在知道一个职员的 名字 ,怎么快速地找出得到他所在组的全部成员。
:
: ...................
--来自微水木3.5.11
--
FROM 39.144.43.*
楼主还要用C++ 实现,你觉得他会喜欢数据库么?
这种问题最基本的思路都是 SQL搞定..
【 在 KillnCov 的大作中提到: 】
: 不要抵制数据库,哪怕是最简单的sqlite也会让程序简单很多。
--
FROM 49.7.47.*
一个公司不会有太多职员吧。。可以从这个地方进行优化。
【 在 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.*
我也是这么想的,然后把数据存储在redis里,简单解决
【 在 hgoldfish 的大作中提到: 】
: 做个映射就行了。
:
: 你强行给每个公司赋值一个 int64_t 高位。做映射表进行转换。
: ...................
--
FROM 124.127.12.*
反正你肯定用数据库了,那么这就是个简单SQL的问题
【 在 speedboy2998 (极品飞车) 的大作中提到: 】
: 有多个公司,每个公司有多个组,每个公司的每个职员属于且仅属于公司的某个组。
: 现在知道一个职员的 名字 ,怎么快速地找出得到他所在组的全部成员。
: 我简单设计了一个觉得太麻烦了。
: std::map<int64_t, std::map<int64_t, std::set<std::string>> groupMembers;
: 首先根据 companyId 找到这个公司的所有组,再遍历所有组,对每个组成员所在的set进行 find, 找到了就返回整个 set。
: 有更优雅高效的解决方案吗?
--
FROM 125.33.203.*