0

各行に 2 つの値を含むファイルを読み取るプログラムを作成しています。これらの値は、xVals と yVals の 2 つのベクトルに格納する必要があります。そのため、push_back 関数を使用していますが、コードをより美しくしたいと考えています。今では次のようになります。

ifstream file;
file.open("foo.txt");
double TempVal;
while(file >> TempVal){
    xVals.push_back(TempVal);
    file >> TempVal;
    yVals.push_back(TempVal);
}

私が現在探しているのは、次のようなソリューションです(重要な行のみ):

while(file >> xVals.push_back(??) >> yVals.push_back(??))

クエスチョン マークは、">> で渡された値を取得する方法がわからない" の略です...これを達成するための簡単な (上記の 3 行よりも簡単な) またはより良い方法はありますか? :-)

ありがとう

4

2 に答える 2

5

次のようなことができます。

double tempX, tempY;
while( file >> tempX >> tempY )
{
    xVals.push_back(tempX);
    yVals.push_back(tempY);
}

本当に美しいものが必要な場合は、ストリームの抽出/挿入を実行するクラスを定義してPointから、アルゴリズムを使用します。

std::vector<Point> points;
std::copy(
    std::istream_iterator< Point >( file ), std::istream_iterator< Point >()
  , std::back_inserter( points )
);
于 2012-05-30T17:36:25.640 に答える