投票系统示例代码
内容提要
这篇文章介绍了一个投票系统的示例代码,包括了投票问题、选项、投票数等信息,并展示了如何计算和打印投票结果。
延伸解读
数据结构设计:分离投票与结果
示例代码将投票数据与结果数据分开定义:Poll 结构保存投票的原始信息(ID、问题、选项列表和投票数映射),而 PollResult 结构则用于存储计算后的结果(选项文本与票数的配对、总票数)。这种分离让数据职责更清晰,便于后续扩展或替换结果展示逻辑。
投票数映射的键值对应关系
代码使用 std::map<int, int> 存储投票数,键为选项 ID,值为该选项的票数。在计算时,通过 poll.votes[option.id] 获取对应票数。这种设计允许选项与票数分开维护,但需要注意:如果某个选项没有投票记录,map 的 operator[] 会默认插入 0,可能影响数据一致性。
结果计算与输出的实现方式
程序遍历 poll.options,为每个选项从 votes 映射中取出票数,存入 PollResult 的 options 向量,并累加总票数。最后按顺序打印投票 ID、问题、总票数以及每个选项的票数。这种实现简单直接,适合演示,但未涉及输入验证、动态投票或持久化等实际场景。
Q&A
投票系统的主要结构是什么?
投票系统主要由Poll和PollResult两个结构组成,Poll包含投票ID、问题、选项和投票数映射,PollResult用于存储投票结果。
如何计算投票结果?
通过遍历Poll中的选项,累加每个选项的投票数,并记录总投票数,最终打印结果。
示例代码中投票问题是什么?
示例代码中的投票问题是“What's your favorite color?”。
投票选项是如何定义的?
投票选项通过Option结构定义,包含选项ID和选项文本。
PollResult结构包含哪些信息?
PollResult结构包含投票ID、问题、选项及其投票数的配对,以及总投票数。
如何在代码中初始化投票实例?
通过创建Poll对象,设置ID、问题、选项和投票数来初始化投票实例。