这个代码片段究竟做了啥?

Posted

技术标签:

【中文标题】这个代码片段究竟做了啥?【英文标题】:What does this code snippet do exactly?这个代码片段究竟做了什么? 【发布时间】:2017-06-11 08:36:10 【问题描述】:
int max = 0, id = 0;
int indx= 0;

vector<int> clusters(k,0);

for (size_t i = 0; i < bestLabels.size(); i++)

    id = bestLabels[i];
    clusters[id]++;

    if (clusters[id] > max)
    
        max = clusters[id];
        indx = id;
    

这段代码通过 K-Means Clustering 计算最大的集群,但我不太明白 "clusters[id]++;" 是如何实现的和“集群[id]”工作。他们具体做什么?任何人都可以详细解释for循环内发生的过程吗?任何帮助将不胜感激。谢谢!

【问题讨论】:

可能重复:The Definitive C++ Book Guide and List 【参考方案1】:

下面一行:

vector&lt;int&gt; clusters(k,0);

定义k 总整数的随机访问集合,每个整数的初始值为0。clusters[id] 访问存储在向量中索引id 处的整数值。 clusters[id]++ 递增存储在索引id 处的整数值。这是因为向量上的operator [] 返回对索引项的引用,从而允许修改。

【讨论】:

哦,我明白了。现在对我来说更有意义了。我只是因为“clusters”变量有两个参数而感到困惑,并用变量“id”递增它。谢谢你,米克尔!【参考方案2】:

for 循环遍历bestLabels 中的标签并根据它们出现的频率对它们进行评分(clusters[id]++ - 这部分会增加分数或频率)。它还跟踪最常见的标签 - 这就是 if (clusters[id] &gt; max) 条件的子句所做的。

【讨论】:

谢谢你的回答,holygeek。我想我对vector 变量更感到困惑,但我现在明白了。

以上是关于这个代码片段究竟做了啥?的主要内容,如果未能解决你的问题,请参考以下文章

`return` 在 AutoHotKey 中究竟做了啥?

如何使用 Android 片段?

nVIDIA CUDA 驱动程序究竟做了啥?

这个片段中发生了啥关于 n 在 pc[i] 中的表示

tensorflow 会话究竟做了啥?

Keras Tokenizer 方法究竟做了啥?