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;

如此反覆則可以實現自動或者半自動流程處理功能。

 

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