Best way to do pattern matching in QList
-
Hello, I need to match a pattern of about length 10, in a QList<qint8> of about size 50. All elements are either 0 or 1. The pattern may exist multiple times and I may need to find all of them. Any suggestions how to do this easily? I am not finding any QList compare functions.
Currently I am doing the following, but not very convenient:
@ for( int i=0; i<bits.size()-10; i++ )
{
if( bits.at(i)==0 && bits.at(i+1)==0 && bits.at(i+2)==0 && bits.at(i+3)==0
&& bits.at(i+4)==0 && bits.at(i+5)==0 && bits.at(i+6)==0 && bits.at(i+7)==0
&& bits.at(i+8)==1 && bits.at(i+9)==0 )
...
@
Thanks
Ron -
That's actually doing the job but if you want to save code or do it someway different, you could try:
Create an empty QString
Create a for to iterate trough all 10 values
On every iteration, append the current value to you QString
After the for ends, compare whatever pattern you want with your QString.
@
if (QString==QString)
{
// your code
}
@This may look longer to code, but it will allow you to compare what you have with any pattern, as well as they are the same size.
-
That is a good idea BlastDV. Maybe there is some easy way to compare a QList to a section of another QList.
-
I'm also interested to know. Let's see if some other idea pops up!