gpt4 book ai didi

c++ - istream_iterators 之间的距离

转载 作者:太空狗 更新时间:2023-10-29 20:27:26 25 4
gpt4 key购买 nike

我正在尝试通过使用 std::distance 作为 vector 的构造函数参数来计算 std::cin 读取的元素数量,就像这样:

// 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(...);

显然,我可以使用 std::copy 一步完成,但这需要事先设置一个大小。我的问题不是关于 vector ,而是关于使用 std::istream_iterator 获取任意输入的大小而不影响流。有什么想法吗?

最佳答案

std::istream_iterator是一个 InputIterator ,这意味着它只支持在您迭代的范围内进行单次传递。没办法先算出大小,再回到开头读取数据。

您可以使用 std::copystd::cin(或任何其他输入流)读取,而无需事先知道大小,只需使用 std::back_inserter将正在读取的数据附加到 vector

std::vector v;
std::copy( std::istream_iterator<std::string>(std::cin),
std::istream_iterator<std::string>(),
std::back_inserter(v) );

关于c++ - istream_iterators 之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16373420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com