用于存储文件名和文件大小的数据类型是什么?

时间:2012-12-22 10:45:56

标签: c++ stl

我需要做的是将文件名及其大小合并到一个容器中,文件名可以重复,当然也可以重复。第二件事是我需要按照大小来对这个容器进行排序:排序后它会是这样的:

1100 -> a.txt
1100 -> a.txt
1200 -> a.txt
1200 -> b.txt

因此我可以使用for循环从最小文件到最大文件进行迭代。类似于php中的数组,但两个值都允许重复。

1 个答案:

答案 0 :(得分:4)

由于您希望每个键具有多个值的关联数组,因此您实际需要std::multimap

实施例

typedef std::multimap<size_t, std::string> SFMap;
SFMap fileMap;

fileMap.insert(SFMap::value_type(1100,"a.txt"));
fileMap.insert(SFMap::value_type(1100,"a.txt"));
fileMap.insert(SFMap::value_type(1200,"a.txt"));
fileMap.insert(SFMap::value_type(1200,"b.txt"));

for(SFMap::iterator it = fileMap.begin(); it != fileMap.end(); it++){
    std::cout << it->first << " -> " << it->second << "\n";
}