QT实现,遍历数组中每个元素,统计值相同的数据,返回其数量。
时间: 2024-10-15 11:13:43 浏览: 20
QT实现图片的二值化与灰度化
在Qt中,你可以通过遍历数组并利用标准库提供的数据结构如`QMap`或`std::map`来实现这个功能。以下是一个简单的示例,假设我们有一个整数数组:
```cpp
#include <QObject>
#include <QList>
#include <QMap>
class ArrayProcessor : public QObject
{
public:
int countDuplicates(const QList<int>& arr) const
{
QMap<int, int> counts;
for (int element : arr)
{
if (counts.contains(element))
counts[element]++;
else
counts[element] = 1;
}
return counts.value(0, 0); // 如果数组为空或无重复,返回0
}
signals:
void resultReady(int duplicatesCount);
private slots:
void processArray()
{
int duplicateCount = countDuplicates(arrayData);
emit resultReady(duplicateCount);
}
};
```
在这个例子中,`countDuplicates`函数接收一个`QList<int>`类型的数组,然后创建一个映射`counts`来存储每个值及其出现的次数。遍历数组时,如果遇到已存在的键,则增加计数;如果不存在,则添加新键并设置计数为1。最后返回映射中对应值的初始计数。
如果你想要实时更新结果并触发信号,可以设置一个槽函数`processArray()`,它会调用`countDuplicates`并发出`resultReady`信号。
阅读全文