2

次のような値を保持するテキストファイルがあります。

30 Text
21 Text
12 Text 
1  Text
3  Text

これを2D配列に読み込んで、番号とテキスト識別子を一緒に保持したいと思います。これを実行したら、テキストファイルが並べ替えられないため、これを昇順で並べ替えます。

これをC++で実行するための最良の方法は何ですか、配列に入れる必要がありますか?私の目的は、テキストファイルから上位3つの最高値を取得することです。これに適したデータ構造、またはそれを実行するためのより良い方法はありますか?とにかくテキストファイルを構造化できますが、変更する必要がある場合は具体的な形式ではありません。

TIA

4

2 に答える 2

3

上位3つの値のみが必要な場合、最も効率的な方法は、3つの変数(または3要素の配列)を定義し、ファイルを1行ずつ読み取り、新しく読み取った行が上位3つに属する場合は、そこにあります。

ただし、コンテナを使用する場合は、ファイルが十分に小さく、すべてのデータがメモリに収まると仮定して、std::vectorを使用します。std::sort

于 2012-04-30T12:22:07.163 に答える
2

それらをstd::mapに配置することをお勧めします(一意のキーがある場合。代わりにstd :: multipmapを使用しない場合)。したがって、データをマップに挿入すると、常に並べ替えられます。また、最も高い3つの値を取得する場合は、マップの最初の3つのアイテムを取得します。

于 2012-04-30T12:29:25.253 に答える