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文件列表放到處理模塊進行處理,
- 需要知道當前處理流程對應文件個數以及文件名,
- 需要檢測文件列表中文件是否發生變化
- 判斷當前流程是否走完
- 判斷所有的流程是否走完
因此,這裏的處理方式是,先取到文件夾中的文件名列表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;
如此反覆則可以實現自動或者半自動流程處理功能。