程序的输入由两部分组成。 输入第一行是元素个数,第二行是所有元素。这是一个示例输入:
5
1 3 23 4 2
有没有一种方法可以在不使用 std::string
并将其解析为 int vector 的情况下处理这种输入?
最佳答案
这听起来像是编程竞赛或其他类似的设置,您可以相信输入的格式正确。如果是这样的话,是的,您可以在不通过 std::string
缓冲的情况下执行此操作。这是一个选项:
std::size_t size;
std::cin >> size;
std::vector<int> values;
// Could do values.reserve(size); here if you'd like.
for (std::size_t i = 0; i < size; i++) {
std::size_t value;
std::cin >> value;
values.push_back(value);
}
请注意,流提取运算符 operator >>
将使用任何空白字符作为分隔符,因此元素数量之后的换行符和数字本身之间的空格字符将作为分隔符发挥很好的作用。没有必要单独拉出整个第二行然后将其分开。
这不会进行错误检查,如果您不相信输入,这将是一个真正的问题。但如果可以的话,这应该可以解决问题。
关于c++ - 处理未知大小的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57700610/