QT实现,遍历数组中每个元素,统计其中值相同的元素,输出统计结果。
时间: 2024-10-16 07:03:37 浏览: 39
在QT(一种跨平台的C++应用程序框架)中,你可以使用标准库如`QList`或`std::vector`,配合循环结构(如`for`或`while`)以及条件判断,来遍历数组并统计值相同的元素。这里是一个简单的示例:
```cpp
#include <QObject>
#include <QList>
#include <QPair>
class ArrayCounter : public QObject {
public:
explicit ArrayCounter(QList<int> array) {
int currentValue = array.first();
int count = 1;
for (int i = 1; i < array.size(); ++i) {
if (array.at(i) == currentValue) {
count++;
} else {
emit valueCount(currentValue, count); // 当值改变时,发出信号通知计数结果
currentValue = array.at(i);
count = 1;
}
}
// 遍历结束后处理最后一个值
emit valueCount(currentValue, count);
}
signals:
void valueCount(int value, int count);
private:
};
// 使用示例
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QList<int> myArray = {1, 2, 2, 3, 4, 4, 4, 5};
ArrayCounter counter(myArray);
connect(&counter, &ArrayCounter::valueCount, std::cout, &QObject::connect, Qt::QueuedConnection); // 连接信号到槽
counter.deleteLater();
return app.exec();
}
```
在这个例子中,`ArrayCounter`类接收一个整数列表,并在遍历过程中统计每个连续相等的元素。每当遇到不同的值时,它会通过`valueCount`信号通知外部,输出当前值及其对应的计数值。
阅读全文