Qt multimap 文件名中包含索引index,获取索引值并与文件名对应,同一个索引可能对应多个文件名,且文件名不一样

QMultiMap,可以放key值相同的项

#include <QMultiMap>

QMultiMap,我这里用到了insert插入,values,获取key值相同的所有的values的list。clear清除。find,返回对应的key以及value的指针,iterator,

官方例子如下

insert

QMultiMap<QString, int> map1, map2, map3;

map1.insert("plenty", 100);
map1.insert("plenty", 2000);
// map1.size() == 2

map2.insert("plenty", 5000);
// map2.size() == 1

map3 = map1 + map2;
// map3.size() == 3

clear所有的stl容器通用的api,清除内容

 

map1.clear();

values

QList<int> values = map.values("plenty");
for (int i = 0; i < values.size(); ++i)
    cout << values.at(i) << Qt::endl;

 find

QMultiMap<QString, int>::iterator i = map.find("plenty");
while (i != map.end() && i.key() == "plenty") {
    cout << i.value() << Qt::endl;
    ++i;
}

到此为止是QMultiMap功能描述。

 

之所以要用到multimap,就是因为我的文件夹中的文件名命名方式是mainIndex_subIndex_time.*,同一个mainIndex后面会跟4到5个subindex,而同一个mainindex的文件列表,是我的函数处理一次的量,

现在想实现自动选择mainindex文件列表放到处理模块进行处理,

  1. 需要知道当前处理流程对应文件个数以及文件名,
  2. 需要检测文件列表中文件是否发生变化
  3. 判断当前流程是否走完
  4. 判断所有的流程是否走完

因此,这里的处理方式是,先取到文件夹中的文件名列表filenamelist,然后循环filenamelist找filenamelist[i].indexof(“_”)得到mianindex的字符串再用toInt得到mainindex值,调用filenamemap.insert(mainindex,filenamelist[i])组成一个一个key对应多个value的multimap。同时记录不同的mainindex到list<int>中,不同的mainindex对应不同的流程。每个流程key对应的文件名列表是一个流程处理的文件个数。

list[i]对应流程。处理完一个文件filenamemap.values(list[i]).size()--,filenamemap.values(list[i]).size()--为0则处理完 一个mianindex流程完毕i++。所有流程完毕i=0;

如此反复则可以实现自动或者半自动流程处理功能。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章