如何使用Qt计算表中值的频率
Posted
技术标签:
【中文标题】如何使用Qt计算表中值的频率【英文标题】:how to calculate a frequency of a value in a table using Qt 【发布时间】:2018-07-24 11:16:33 【问题描述】:通常在我的表上我有这些值 (0,0,80,0,0,0,80,80,80,40) 这个表被命名为 qvValues ,我想在频率表上 (5,4 ,1)
#include<QDebug>
#include <QList>
QList<double> frequencies;
QList<double> qvValues;
for(int i=0;i<qvValues.size();i++)
frequencies.append(qvValues.count( qvValues[i]));
qDebug() << frequencies;
【问题讨论】:
请举例输入输出。 只需使用QMap<double, int>
。你只需要一个“for”循环。
您的问题与Qt有关,还是与频率表的创建有关?我假设是后者,因为您显示的代码实际上没有任何特定于 Qt 的内容(frequence
是 Qt 容器?)。我建议你创建一个非 GUI 的 MCVE 程序,它生成并打印表格,并解释它是如何工作的错误(显示它的作用,与它应该做什么相比)。
例如,我在 qvValues 中有这些值:0 0 2 1 1,频率表应该有 2 1 2、2 of 0、1 of 2 和 2 of 1,频率是包含出现次数的表@John Zwinck
我看不出这个问题与 Qt 有什么关系。也很难理解你想要什么。您发布了代码,但您能描述一下它有什么问题吗?您想做什么?您的代码在哪些方面没有按预期运行?
【参考方案1】:
这些值来自您的示例(评论)。
#include <QMap>
#include <QList>
#include <QDebug>
int main(int argc, char *argv[])
QList<int> values;
QMap<int, int> frequencies;
values << 0 << 0 << 80 << 0 << 0 << 0 << 80 << 80 << 80 << 40;
int value;
foreach ( value, values )
if ( !frequencies.contains( value ) )
frequencies.insert( value, values.count( value ) );
qDebug() << "Value: " << value << " Frequency: " << values.count( value );
return 0;
【讨论】:
【参考方案2】:使用QList
类来存储您的qvValues
。您可以使用单个for
循环和int QList::count( const T& value )
来计算每个值的频率。
【讨论】:
您能否澄清一下这个想法,例如我有 qvValues[0]=1 和 qvValues[1]=1 ,如果我这样做 for (int i=0; iQList<int> values;
QList<int> frequencies;
values << 0 << 0 << 2 << 1 << 1;
for ( int i = 0; i < values.size(); i++ ) frequencies.append( values.count( values[ i ] );
通常我的值是 (0, 0, 80, 0, 0, 0, 80, 80, 80, 40) 和你的代码它给了我 (5, 5, 4, 5 , 5, 5, 4, 4, 4, 1) ,目的是作为结果(5.4.1)
你能帮帮我吗
@Oumaima Sh,将解决方案放在答案中以清楚地看到代码以上是关于如何使用Qt计算表中值的频率的主要内容,如果未能解决你的问题,请参考以下文章