CS50 - PSET3 运行 off - 麻烦理解投票功能,更具体地说是什么 preferences[voter][rank] = i;做

CS50 - PSET3 Run off - trouble understanding the vote function, more specifically what preferences[voter][rank] = i; does

我目前正在做 cs50 和 pset3,我遇到了这个棘手的问题集 Runoff 所以基本上,这是一个 vote() 函数的解决方案,它搜索一个特定的候选人和returns true 并记录选票如果候选人是使用决选式选举找到的,其中选民按排名顺序给出偏好,二维数组 preferences 已经初始化。候选人是另一个包含候选人列表的数组

// Record preference if vote is valid
bool vote(int voter, int rank, string name)
{
    
    
    for (int i = 0; i < candidate_count; i++){
        if (strcmp(candidates[i].name,name)==0){
            preferences[voter][rank] = i;
            return true;
        }
    }

只是我真的很困惑

preferences[voter][rank] = i;

当这样的候选人是 found/true 时。每次循环运行时 = i; 是什么意思?为什么不 preferences[voter][rank]=candidates[i];

一直在努力解决这个问题,因为我真的无法理解它,任何帮助都会非常感激。谢谢。

What does it mean by = i;

它将候选人的索引(读取:位置)存储在其各自的 candidates 数组中。以后可以通过这个索引查询候选人的名字。

Why not preferences[voter][rank]=candidates[i];

因为(我假设)preferences 是一个二维 int(左右)数组。 当然,您可以使用不同类型的数组并存储(例如)指向候选人的指针。