投票系统示例代码

💡 原文英文,约300词,阅读约需1分钟。
📝

内容提要

这篇文章介绍了一个投票系统的示例代码,包括了投票问题、选项、投票数等信息,并展示了如何计算和打印投票结果。

🔎

延伸解读

数据结构设计:分离投票与结果

示例代码将投票数据与结果数据分开定义: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、问题、选项和投票数来初始化投票实例。

➡️

继续阅读