大きなベクトルがあります。ベクトル値をファイルに書き込む方法
私が使用する方法は、プログラムの実行時間を大きく掛けます。最初は、stringstreams
を使用して計算された文字列にすべての値を書き込み、後でその文字列をファイルに書き込みます。他の方法は、事実の後で長い文字列を作成し、それをファイルに書き込むことです。しかし、どちらも非常に遅いです。
テキストファイルにベクトルの値を改行してただちに書き込む方法はありますか?
大きなベクトルがあります。ベクトル値をファイルに書き込む方法
私が使用する方法は、プログラムの実行時間を大きく掛けます。最初は、stringstreams
を使用して計算された文字列にすべての値を書き込み、後でその文字列をファイルに書き込みます。他の方法は、事実の後で長い文字列を作成し、それをファイルに書き込むことです。しかし、どちらも非常に遅いです。
テキストファイルにベクトルの値を改行してただちに書き込む方法はありますか?
std::ofstream
を使用すると、std::ostream_iterator
とstd::copy()
がこれを行う通常の方法です。
#include <fstream>
#include <iterator>
#include <string>
#include <vector>
int main()
{
std::vector<std::string> example;
example.push_back("this");
example.push_back("is");
example.push_back("a");
example.push_back("test");
std::ofstream output_file("./example.txt");
std::ostream_iterator<std::string> output_iterator(output_file, "\n");
std::copy(example.begin(), example.end(), output_iterator);
}
例として文字列を使用するように注意してください。文字列のベクトルをロードするための逆は異なります(出力/入力が異なる唯一の標準タイプです)。 –
あなたは "質問には前のC++ 11が尋ねられました"と書いてあります - これを行うにはC++ 11とは別の方法がありますか? – Default
std::copyとstd::ostream_iteratorを使用できます。
#include <fstream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> v{ "one", "two", "three" };
std::ofstream outFile("my_file.txt");
// the important part
for (const auto &e : v) outFile << e << "\n";
}
「ただのテキストファイルへのベクトルの値を書き込むための方法があります:ここで
std::string
SはC++ 98の構文を使用して例がある(質問は事前にC++ 11を頼まれました)直ちに改行なしで? - 改行の有無にかかわらず必要ですか? – Ajay私のプログラムは、これまで5分で3時間かかっていたことを終わらせることができてうれしく思います。XD – TimeCoder