私が何かを見逃していない限り、あなたはすべてをすぐに利用できるようです. エクステンションの総数は
fileMap.size()
次に、このマップを繰り返して、ファイル数とバイト数を出力できます
for (auto i=fileMap.begin(); i!=fileMap.end(); ++i)
cout << i->first << '=' << i->second.totalFiles << ':' << i->second.fileSize << endl;
合計を出力するテスト プログラムを次に示します。
#include <iostream>
#include <map>
class fileStats
{
public:
int totalFiles;
long long fileSize;
fileStats() : totalFiles(0), fileSize(0) {}
fileStats(int f, long long s) : totalFiles(f), fileSize(s) {}
fileStats& operator+=(const fileStats& other)
{
totalFiles += other.totalFiles;
fileSize += other.fileSize;
return *this;
}
};
int main(int argc, char* argv[]) {
typedef std::map< std::string, fileStats > map_type;
map_type fileMap;
fileMap["cpp"].totalFiles++;
fileMap["cpp"].fileSize += 11111;
fileMap["h"].totalFiles++;
fileMap["h"].fileSize += 22222;
fileMap["cpp"].totalFiles++;
fileMap["cpp"].fileSize += 33333;
fileStats totals;
for (map_type::const_iterator i=fileMap.begin(); i!=fileMap.end(); ++i)
totals += i->second;
std::cout << "total files=" << totals.totalFiles << ' ' << "total size=" << totals.fileSize << std::endl;
return 0;
}