それぞれ 100 メガバイト以上の std::ofstream テキスト ファイルが 2 つあり、それらを連結したいと考えています。fstreams を使用してデータを保存し、単一のファイルを作成すると、通常、サイズが大きすぎるため、メモリ不足エラーが発生します。
O(n) よりも速くマージする方法はありますか?
ファイル 1 (160MB):
0 1 3 5
7 9 11 13
...
...
9187653 9187655 9187657 9187659
ファイル 2 (120MB):
a b c d e f g h i j
a b c d e f g h j i
a b c d e f g i h j
a b c d e f g i j h
...
...
j i h g f e d c b a
マージ済み (380MB):
0 1 3 5
7 9 11 13
...
...
9187653 9187655 9187657 9187659
a b c d e f g h i j
a b c d e f g h j i
a b c d e f g i h j
a b c d e f g i j h
...
...
j i h g f e d c b a
ファイル生成:
std::ofstream a_file ( "file1.txt" );
std::ofstream b_file ( "file2.txt" );
while(//whatever){
a_file << num << endl;
}
while(//whatever){
b_file << character << endl;
}
// merge them here, doesn't matter if output is one of them or a new file
a_file.close();
b_file.close();