C++ を使用して「標準 stdin プロシージャ」を使用するコンテスト用のプログラムを作成しています。取り込まれた最初の行は、それ以降の入力として期待される行数 (x) を示します。これらの入力行は、文字列、整数、またはその 2 つの組み合わせであり、各行にはスペースで区切られた正確に 2 つの要素が含まれます。現時点では、次のような方法で各行を 1 つずつ取り込んでいます (次の行を要求する前に情報を処理しています)。
string initial;
getline (cin,initial);
istringstream stringStream (initial);
vector<string> parsedString;
vector<int> data;
char splitToken = ' ';
while ( !stringStream.eof() )
{
string subString;
getline( stringStream, subString, splitToken);
parsedString.push_back( subString );
}
for (int i = 0; i <parsedString.size(); i++)
{
string temp = parsedString[i];
int intTemp = atoi(temp.c_str());
data.push_back(intTemp);
}
unsigned int n = data[0];
unsigned int m = data[1];
この特定のケースでは、受信データが 2 つの整数になることはわかっていますが、常にそうとは限りません。アプローチを変更するか (おそらく、期待される数を知った後にすべての入力行を一度に取得する)、または組み込みの C++ 関数を使用して入力行を分割することにより、コードを高速化する方法があるかどうか疑問に思っていました。それらを構成する 2 つの要素にスペースを入れます。
ありがとう