qt(语言c++)中怎样在未知数组元素的情况下统计数组中每个不同元素的数据有多少个

qt(语言c++)中怎样在未知数组元素的情况下统计数组中每个不同元素的数据有多少个
比如【1 1 2 3 4 5 5 6】,你不知道数组中的数据是这六种,怎样统计出1有2个,2346各有1个,5有2个,或者说这样能做到吗

还有就是怎样这样统计字符类数据

未知数组元素类型的情况下可以用模板,在Qt中,用QMap存储数据和数据出现的次数即可。
示例代码及运行结果如下(Qt下创建的控制台程序):
运行结果:

img

代码:

#include <QCoreApplication>
#include <QMap>
#include <QDebug>
template <typename T>
void Tongji (T a[],int n,QMap<T,int> &mout)
{
    typename QMap<T,int>::iterator it;
    int i=0,t;
    for (;i<n;i++)
    {
        it = mout.find(a[i]);
        if (it == mout.end())
        {
            mout.insert(a[i],1);
        }else
        {
            t = it.value() +1;
            mout.erase(it);
            mout.insert(a[i],t);
        }
    }

}


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    int test[] ={1,1,2,3,4,5,6};
    QMap<int,int> mm;
    Tongji(test,7,mm);
    QMap<int,int>::iterator it = mm.begin();
    for (;it != mm.end();it++)
    {
        qDebug() << it.key() << "  " << it.value() <<endl;
    }
    return a.exec();
}



定义两个数组,一个记录有多少个不同的数字,一个记录该数字出现的次数。
遍历数组,对于每个数字,判断是否已经在数字数组中,在则对应的次数数组加1,否则在数字数组中增加新的数字,同时对应的次数数组项值设置为1

C++ 有stl啊
直接用 unordered_map<char,int>
unordered_map<char,int> map;
string str{"11234556"};
for(int i=0;i<len;i++)
{
map[str[i]]++;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632