1

私がする必要があるのは、ファイル名とそのサイズを1つのコンテナーに結合することです。ファイル名は繰り返すことができ、もちろんサイズも繰り返すことができます。そして2つ目は、このコンテナをサイズで並べ替える必要があることです。並べ替え後は次のようになります。

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

したがって、forループを使用して、最小のファイルから最大のファイルまで反復できます。phpの配列に似ていますが、両方の値を繰り返すことができます。

4

1 に答える 1

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";
}
于 2012-12-22T10:49:19.167 に答える