有没有办法获取重复字符串在QStringList中的次数并将其与字符串本身进行分组?在QStringList中寻找重复的字符串并获得重复的计数
例如,如果列表包含[“a”,“a”,“a”,“a”,“b”,“b”,“b”,“c”,“c”]
我就可以把它变成像
一个x4
b X3
çX2
我唯一的解决办法,现在是使用QList::contains()
,然后将它们添加了整数但问题与那是有500个字符串可以进入QStringList,所以我不想创建500个500字符串的字符串。
有没有办法获取重复字符串在QStringList中的次数并将其与字符串本身进行分组?在QStringList中寻找重复的字符串并获得重复的计数
例如,如果列表包含[“a”,“a”,“a”,“a”,“b”,“b”,“b”,“c”,“c”]
我就可以把它变成像
一个x4
b X3
çX2
我唯一的解决办法,现在是使用QList::contains()
,然后将它们添加了整数但问题与那是有500个字符串可以进入QStringList,所以我不想创建500个500字符串的字符串。
试试这个:
QMap<QString,int> countOfStrings;
QStringList listOfStrings;
listOfStrings<<"a"<<"b"<<"c"<<"a";
for(int i=0;i<listOfStrings.count();i++)
{
countOfStrings[listOfStrings[i]]++;
}
QMap
默认int
s到0。如果它与第一时间的字符串时,它将自动调用countOfStrings[newStr]
你也可以创建一个具有(newStr,0)
入口做qDebug()<<countOfStrings;
在C++ 11中,循环应该写成for for(auto const&str:listOfStrings)countOfStrings [str] ++;' –
我的for循环保证可以在所有情况下工作。提问者没有在C++ 11中寻找答案。如果他/她的组织不允许C++ 11,该怎么办? –
@ MuhammetAliAsan,如果一个组织不使用C++,那么他们不必使用库巴的建议。正如我所看到的,他只是提供额外的信息,而不是批评你的答案。如果他认为你错了,他可以发布自己的答案,甚至编辑你的答案。 – TheDarkKnight
字符串是否总是像你的例子中分组? – ilotXXI
您可以对列表进行排序,然后遍历它,同时跟踪当前索引处的字符串是否更改。 –