當前正在編寫一個程序,該程序將通過一個目錄進行解析(使用boost庫),並將文件擴展名,該特定類型文件的編號以及文件大小添加到包含字符串的地圖關鍵是一個班級。我現在正在嘗試查找每個文件擴展名的出現總數,目錄中找到的文件總數以及該目錄中找到的總字節數。計算地圖中的發生率
這裏是重要的代碼:
class fileStats
{
public:
int totalFiles;
long long fileSize;
};
map< string, fileStats > fileMap;
fileMap[dirIter->path().extension()].totalFiles++;
fileMap[dirIter->path().extension()].fileSize += file_size(dirIter->path());
我不認爲我可以使用地圖的.Count中的方法,除非我超載了,但有沒有這樣做的另一種更簡單的方法?
如果你保持一個計數,而迭代在地圖上你可以指望在O(n)的發生。但是,如果您首先使用不同的數據結構,則可能會獲得更好的結果 – aaronman
如果您必須使用某種邏輯計算總量,則可以迭代地圖,然後在元素符合條件時使用boost :: accumulator。 – Jepessen