次のように、事前にベクトルのコンストラクター引数にstd::cin
使用して、読み取られた要素の量をカウントしようとしています。std::distance
// Gives correct amount, but now can't use to put into vector
int size = std::distance(std::istream_iterator<std::string>(std::cin),
std::istream_iterator<std::string>());
std::vector v(size);
// Already read from stream
std::copy(...);
明らかに、これを で 1 ステップで完了することができますstd::copy
が、それには事前にサイズを設定する必要があります。私の質問はベクトルに関するものではなくstd::istream_iterator
、ストリームに影響を与えずに使用して任意の入力のサイズを取得することです。何か案は?