假如一堆数据,每一个数据都有一个标志位,按照标志位值的不同进行划分为不同的组,进行归类。
代码如下:
void chunzhongForm::traverseList(winProList &dataList)
{
int nSize = dataList.size();
for(int i = 0; i < nSize; ++i)
{
packetDate(dataList.at(i));
}
}
void chunzhongForm::packetDate(const WM_PROPERTY &data)
{
bool isHave = false;
for(int i = 0; i < screenGroupVec.size(); ++i)
{
winProList &everyList = screenGroupVec[i];
if(everyList.at(0).sid == data.sid)
{
isHave = true;
everyList.append(data);
break;
}
}
if(!isHave)
{
winProList sigleList;
sigleList.append(data);
screenGroupVec.push_back(sigleList);
}
}
winProList 是一个结构体类型的list,通过遍历将每一个结构体按照其某一个字段的值放到一个list中,screenGroupVec为一个list类型的vector,而list是一个结构体类型,按照list中结构体的某一个字段的值不同进行归类。函数传入的形参是需要归类的结构体变量,最终所有归类的变量会储存在screenGroupVec中。
文章只有实现的思想,贵在参悟。