2013-12-16 37 views
0
  1. 我的程序循環遍歷文件夾中的每個文件,以檢查它是過時還是最新版本的繪圖。
  2. 圖紙文件名格式爲「VALID-FILE-PATTERN-AAA-R1.pdf」
  3. 圖紙文件被認爲是過期如果「VALID-FILE-PATTERN-AAA-R2.pdf」文件已存在。
  4. 有時,版本2文件不存在,並且直接從R1到R3排除R2。

我的問題是「什麼是檢查最新版本繪圖更有效的方法是什麼?高效搜索更新的修訂文件?

什麼我計劃是這樣的代碼

if(nextRevisionExists()) { 
    doSomethingWithOldRevision(drawingFile); 
} else { 
    // MAXIMUM REVISION IS 150 TO PREVENT TOO MUCH LOAD 
    for(int i=currentRevision + 2; i <= 150; i++) {    
     if(revisionExists(i)) 
      doSomethingWithOldRevision(drawingFile); 
    } 
} 

我不是專業程序員,而只是文檔控制器。請了解我的英文不好&編程知識不足。

回答

0

更有效的方法是將文件名的地圖存儲版本號和更新版本號,同時通過文件迭代:

//std::string contains VALID-FILE-PATTERN-AAA 
// int contains revision number for that file. 
    std::map<std::string,int> revisionMap; 

您將需要通過文件列表的文件夾中進行迭代一次產生地圖,地圖是自給自足的,它爲每個文件提供最新版本的文件夾中的完整文件列表(當您生成地圖時,您只記住每個文件的最新版本)。

1

使用下面的僞代碼,

create a map with key being filename and value being revision 
do for each file{ 
    Parse the file name and extract file name and revision 
    if the map already has the key as file name{ 
     get its value from map, compare with current file's revision 
    } 
    else{ 
     add the key value pair(name,revision) to the map 
    } 
}