这个代码片段究竟做了啥?
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<int> clusters(k,0);
定义k
总整数的随机访问集合,每个整数的初始值为0。clusters[id]
访问存储在向量中索引id
处的整数值。 clusters[id]++
递增存储在索引id
处的整数值。这是因为向量上的operator []
返回对索引项的引用,从而允许修改。
【讨论】:
哦,我明白了。现在对我来说更有意义了。我只是因为“clusters”变量有两个参数而感到困惑,并用变量“id”递增它。谢谢你,米克尔!【参考方案2】:for 循环遍历bestLabels
中的标签并根据它们出现的频率对它们进行评分(clusters[id]++
- 这部分会增加分数或频率)。它还跟踪最常见的标签 - 这就是 if (clusters[id] > max)
条件的子句所做的。
【讨论】:
谢谢你的回答,holygeek。我想我对vector以上是关于这个代码片段究竟做了啥?的主要内容,如果未能解决你的问题,请参考以下文章